blob: 324a1196d95d61eebe434992b96cea462f3df499 [file] [log] [blame]
Fred Drake6659c301998-03-03 22:02:19 +00001\documentclass{manual}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00002
Guido van Rossum9faf4c51997-10-07 14:38:54 +00003\title{Python/C API Reference Manual}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00004
5\input{boilerplate}
6
7\makeindex % tell \index to actually write the .idx file
8
9
10\begin{document}
11
Guido van Rossum9231c8f1997-05-15 21:43:21 +000012\maketitle
13
Fred Drake9f86b661998-07-28 21:55:19 +000014\ifhtml
15\chapter*{Front Matter\label{front}}
16\fi
17
Guido van Rossum9231c8f1997-05-15 21:43:21 +000018\input{copyright}
19
20\begin{abstract}
21
22\noindent
Fred Drakee058b4f1998-02-16 06:15:35 +000023This manual documents the API used by \C{} (or \Cpp{}) programmers who
24want to write extension modules or embed Python. It is a companion to
25\emph{Extending and Embedding the Python Interpreter}, which describes
Guido van Rossum9231c8f1997-05-15 21:43:21 +000026the general principles of extension writing but does not document the
27API functions in detail.
28
Guido van Rossum5b8a5231997-12-30 04:38:44 +000029\strong{Warning:} The current version of this document is incomplete.
30I hope that it is nevertheless useful. I will continue to work on it,
31and release new versions from time to time, independent from Python
32source code releases.
33
Guido van Rossum9231c8f1997-05-15 21:43:21 +000034\end{abstract}
35
Fred Drake4d4f9e71998-01-13 22:25:02 +000036\tableofcontents
Guido van Rossum9231c8f1997-05-15 21:43:21 +000037
Guido van Rossum5060b3b1997-08-17 18:02:23 +000038% XXX Consider moving all this back to ext.tex and giving api.tex
39% XXX a *really* short intro only.
Guido van Rossum9231c8f1997-05-15 21:43:21 +000040
Fred Drakeefd146c1999-02-15 15:30:45 +000041\chapter{Introduction \label{intro}}
Guido van Rossum9231c8f1997-05-15 21:43:21 +000042
Fred Drakeb0a78731998-01-13 18:51:10 +000043The Application Programmer's Interface to Python gives \C{} and \Cpp{}
Guido van Rossum59a61351997-08-14 20:34:33 +000044programmers access to the Python interpreter at a variety of levels.
Fred Drakeb0a78731998-01-13 18:51:10 +000045The API is equally usable from \Cpp{}, but for brevity it is generally
46referred to as the Python/\C{} API. There are two fundamentally
Fred Drakee058b4f1998-02-16 06:15:35 +000047different reasons for using the Python/\C{} API. The first reason is
48to write \emph{extension modules} for specific purposes; these are
49\C{} modules that extend the Python interpreter. This is probably the
50most common use. The second reason is to use Python as a component in
51a larger application; this technique is generally referred to as
52\dfn{embedding} Python in an application.
Guido van Rossum59a61351997-08-14 20:34:33 +000053
Guido van Rossum4a944d71997-08-14 20:35:38 +000054Writing an extension module is a relatively well-understood process,
55where a ``cookbook'' approach works well. There are several tools
56that automate the process to some extent. While people have embedded
57Python in other applications since its early existence, the process of
58embedding Python is less straightforward that writing an extension.
59Python 1.5 introduces a number of new API functions as well as some
60changes to the build process that make embedding much simpler.
Fred Drakec6fa34e1998-04-02 06:47:24 +000061This manual describes the \version\ state of affairs.
Guido van Rossum59a61351997-08-14 20:34:33 +000062% XXX Eventually, take the historical notes out
63
Guido van Rossum4a944d71997-08-14 20:35:38 +000064Many API functions are useful independent of whether you're embedding
65or extending Python; moreover, most applications that embed Python
66will need to provide a custom extension as well, so it's probably a
67good idea to become familiar with writing an extension before
Guido van Rossum59a61351997-08-14 20:34:33 +000068attempting to embed Python in a real application.
69
Fred Drakeefd146c1999-02-15 15:30:45 +000070
71\section{Include Files \label{includes}}
Guido van Rossum580aa8d1997-11-25 15:34:51 +000072
73All function, type and macro definitions needed to use the Python/C
74API are included in your code by the following line:
75
Fred Drakee058b4f1998-02-16 06:15:35 +000076\begin{verbatim}
77#include "Python.h"
78\end{verbatim}
Guido van Rossum580aa8d1997-11-25 15:34:51 +000079
Fred Drakee058b4f1998-02-16 06:15:35 +000080This implies inclusion of the following standard headers:
81\code{<stdio.h>}, \code{<string.h>}, \code{<errno.h>}, and
82\code{<stdlib.h>} (if available).
Guido van Rossum580aa8d1997-11-25 15:34:51 +000083
84All user visible names defined by Python.h (except those defined by
Fred Drakee058b4f1998-02-16 06:15:35 +000085the included standard headers) have one of the prefixes \samp{Py} or
86\samp{_Py}. Names beginning with \samp{_Py} are for internal use
Guido van Rossum580aa8d1997-11-25 15:34:51 +000087only. Structure member names do not have a reserved prefix.
88
Fred Drakee058b4f1998-02-16 06:15:35 +000089\strong{Important:} user code should never define names that begin
90with \samp{Py} or \samp{_Py}. This confuses the reader, and
91jeopardizes the portability of the user code to future Python
92versions, which may define additional names beginning with one of
93these prefixes.
Guido van Rossum580aa8d1997-11-25 15:34:51 +000094
Fred Drakeefd146c1999-02-15 15:30:45 +000095
96\section{Objects, Types and Reference Counts \label{objects}}
Guido van Rossum59a61351997-08-14 20:34:33 +000097
Guido van Rossum580aa8d1997-11-25 15:34:51 +000098Most Python/C API functions have one or more arguments as well as a
Fred Drakef8830d11998-04-23 14:06:01 +000099return value of type \ctype{PyObject *}. This type is a pointer
Fred Drakee058b4f1998-02-16 06:15:35 +0000100to an opaque data type representing an arbitrary Python
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000101object. Since all Python object types are treated the same way by the
102Python language in most situations (e.g., assignments, scope rules,
103and argument passing), it is only fitting that they should be
Fred Drakeb0a78731998-01-13 18:51:10 +0000104represented by a single \C{} type. All Python objects live on the heap:
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000105you never declare an automatic or static variable of type
Fred Drakef8830d11998-04-23 14:06:01 +0000106\ctype{PyObject}, only pointer variables of type \ctype{PyObject *} can
Guido van Rossum59a61351997-08-14 20:34:33 +0000107be declared.
108
Fred Drakee058b4f1998-02-16 06:15:35 +0000109All Python objects (even Python integers) have a \dfn{type} and a
110\dfn{reference count}. An object's type determines what kind of object
Guido van Rossum4a944d71997-08-14 20:35:38 +0000111it is (e.g., an integer, a list, or a user-defined function; there are
Fred Drakee058b4f1998-02-16 06:15:35 +0000112many more as explained in the \emph{Python Reference Manual}). For
Guido van Rossum4a944d71997-08-14 20:35:38 +0000113each of the well-known types there is a macro to check whether an
Fred Drakee058b4f1998-02-16 06:15:35 +0000114object is of that type; for instance, \samp{PyList_Check(\var{a})} is
115true iff the object pointed to by \var{a} is a Python list.
Guido van Rossum59a61351997-08-14 20:34:33 +0000116
Fred Drakeefd146c1999-02-15 15:30:45 +0000117
118\subsection{Reference Counts \label{refcounts}}
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000119
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000120The reference count is important because today's computers have a
Fred Drake003d8da1998-04-13 00:53:42 +0000121finite (and often severely limited) memory size; it counts how many
Guido van Rossum4a944d71997-08-14 20:35:38 +0000122different places there are that have a reference to an object. Such a
Fred Drakeb0a78731998-01-13 18:51:10 +0000123place could be another object, or a global (or static) \C{} variable, or
124a local variable in some \C{} function. When an object's reference count
Guido van Rossum4a944d71997-08-14 20:35:38 +0000125becomes zero, the object is deallocated. If it contains references to
126other objects, their reference count is decremented. Those other
127objects may be deallocated in turn, if this decrement makes their
128reference count become zero, and so on. (There's an obvious problem
129with objects that reference each other here; for now, the solution is
Guido van Rossum59a61351997-08-14 20:34:33 +0000130``don't do that''.)
131
Guido van Rossum4a944d71997-08-14 20:35:38 +0000132Reference counts are always manipulated explicitly. The normal way is
Fred Drakee058b4f1998-02-16 06:15:35 +0000133to use the macro \cfunction{Py_INCREF()} to increment an object's
134reference count by one, and \cfunction{Py_DECREF()} to decrement it by
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000135one. The decref macro is considerably more complex than the incref one,
Guido van Rossum4a944d71997-08-14 20:35:38 +0000136since it must check whether the reference count becomes zero and then
137cause the object's deallocator, which is a function pointer contained
138in the object's type structure. The type-specific deallocator takes
139care of decrementing the reference counts for other objects contained
140in the object, and so on, if this is a compound object type such as a
141list. There's no chance that the reference count can overflow; at
142least as many bits are used to hold the reference count as there are
143distinct memory locations in virtual memory (assuming
144\code{sizeof(long) >= sizeof(char *)}). Thus, the reference count
Guido van Rossum59a61351997-08-14 20:34:33 +0000145increment is a simple operation.
146
Guido van Rossum4a944d71997-08-14 20:35:38 +0000147It is not necessary to increment an object's reference count for every
148local variable that contains a pointer to an object. In theory, the
Fred Drakee058b4f1998-02-16 06:15:35 +0000149object's reference count goes up by one when the variable is made to
Guido van Rossum4a944d71997-08-14 20:35:38 +0000150point to it and it goes down by one when the variable goes out of
151scope. However, these two cancel each other out, so at the end the
152reference count hasn't changed. The only real reason to use the
153reference count is to prevent the object from being deallocated as
154long as our variable is pointing to it. If we know that there is at
155least one other reference to the object that lives at least as long as
156our variable, there is no need to increment the reference count
157temporarily. An important situation where this arises is in objects
Fred Drakeb0a78731998-01-13 18:51:10 +0000158that are passed as arguments to \C{} functions in an extension module
Guido van Rossum4a944d71997-08-14 20:35:38 +0000159that are called from Python; the call mechanism guarantees to hold a
Guido van Rossum59a61351997-08-14 20:34:33 +0000160reference to every argument for the duration of the call.
161
Fred Drakee058b4f1998-02-16 06:15:35 +0000162However, a common pitfall is to extract an object from a list and
163hold on to it for a while without incrementing its reference count.
164Some other operation might conceivably remove the object from the
165list, decrementing its reference count and possible deallocating it.
166The real danger is that innocent-looking operations may invoke
167arbitrary Python code which could do this; there is a code path which
168allows control to flow back to the user from a \cfunction{Py_DECREF()},
169so almost any operation is potentially dangerous.
Guido van Rossum59a61351997-08-14 20:34:33 +0000170
Guido van Rossum4a944d71997-08-14 20:35:38 +0000171A safe approach is to always use the generic operations (functions
Fred Drakee058b4f1998-02-16 06:15:35 +0000172whose name begins with \samp{PyObject_}, \samp{PyNumber_},
173\samp{PySequence_} or \samp{PyMapping_}). These operations always
Guido van Rossum4a944d71997-08-14 20:35:38 +0000174increment the reference count of the object they return. This leaves
Fred Drakee058b4f1998-02-16 06:15:35 +0000175the caller with the responsibility to call \cfunction{Py_DECREF()}
176when they are done with the result; this soon becomes second nature.
Guido van Rossum59a61351997-08-14 20:34:33 +0000177
Fred Drakeefd146c1999-02-15 15:30:45 +0000178
179\subsubsection{Reference Count Details \label{refcountDetails}}
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000180
181The reference count behavior of functions in the Python/C API is best
182expelained in terms of \emph{ownership of references}. Note that we
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000183talk of owning references, never of owning objects; objects are always
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000184shared! When a function owns a reference, it has to dispose of it
Fred Drakee058b4f1998-02-16 06:15:35 +0000185properly --- either by passing ownership on (usually to its caller) or
186by calling \cfunction{Py_DECREF()} or \cfunction{Py_XDECREF()}. When
187a function passes ownership of a reference on to its caller, the
188caller is said to receive a \emph{new} reference. When no ownership
189is transferred, the caller is said to \emph{borrow} the reference.
190Nothing needs to be done for a borrowed reference.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000191
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000192Conversely, when calling a function passes it a reference to an
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000193object, there are two possibilities: the function \emph{steals} a
194reference to the object, or it does not. Few functions steal
Fred Drakee058b4f1998-02-16 06:15:35 +0000195references; the two notable exceptions are
196\cfunction{PyList_SetItem()} and \cfunction{PyTuple_SetItem()}, which
197steal a reference to the item (but not to the tuple or list into which
Fred Drake003d8da1998-04-13 00:53:42 +0000198the item is put!). These functions were designed to steal a reference
Fred Drakee058b4f1998-02-16 06:15:35 +0000199because of a common idiom for populating a tuple or list with newly
200created objects; for example, the code to create the tuple \code{(1,
2012, "three")} could look like this (forgetting about error handling for
202the moment; a better way to code this is shown below anyway):
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000203
204\begin{verbatim}
205PyObject *t;
Fred Drakec6fa34e1998-04-02 06:47:24 +0000206
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000207t = PyTuple_New(3);
208PyTuple_SetItem(t, 0, PyInt_FromLong(1L));
209PyTuple_SetItem(t, 1, PyInt_FromLong(2L));
210PyTuple_SetItem(t, 2, PyString_FromString("three"));
211\end{verbatim}
212
Fred Drakee058b4f1998-02-16 06:15:35 +0000213Incidentally, \cfunction{PyTuple_SetItem()} is the \emph{only} way to
214set tuple items; \cfunction{PySequence_SetItem()} and
215\cfunction{PyObject_SetItem()} refuse to do this since tuples are an
216immutable data type. You should only use
217\cfunction{PyTuple_SetItem()} for tuples that you are creating
Guido van Rossum5b8a5231997-12-30 04:38:44 +0000218yourself.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000219
220Equivalent code for populating a list can be written using
Fred Drakee058b4f1998-02-16 06:15:35 +0000221\cfunction{PyList_New()} and \cfunction{PyList_SetItem()}. Such code
222can also use \cfunction{PySequence_SetItem()}; this illustrates the
223difference between the two (the extra \cfunction{Py_DECREF()} calls):
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000224
225\begin{verbatim}
226PyObject *l, *x;
Fred Drakec6fa34e1998-04-02 06:47:24 +0000227
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000228l = PyList_New(3);
229x = PyInt_FromLong(1L);
Guido van Rossum5b8a5231997-12-30 04:38:44 +0000230PySequence_SetItem(l, 0, x); Py_DECREF(x);
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000231x = PyInt_FromLong(2L);
Guido van Rossum5b8a5231997-12-30 04:38:44 +0000232PySequence_SetItem(l, 1, x); Py_DECREF(x);
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000233x = PyString_FromString("three");
Guido van Rossum5b8a5231997-12-30 04:38:44 +0000234PySequence_SetItem(l, 2, x); Py_DECREF(x);
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000235\end{verbatim}
236
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000237You might find it strange that the ``recommended'' approach takes more
238code. However, in practice, you will rarely use these ways of
239creating and populating a tuple or list. There's a generic function,
Fred Drakee058b4f1998-02-16 06:15:35 +0000240\cfunction{Py_BuildValue()}, that can create most common objects from
241\C{} values, directed by a \dfn{format string}. For example, the
242above two blocks of code could be replaced by the following (which
243also takes care of the error checking):
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000244
245\begin{verbatim}
246PyObject *t, *l;
Fred Drakec6fa34e1998-04-02 06:47:24 +0000247
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000248t = Py_BuildValue("(iis)", 1, 2, "three");
249l = Py_BuildValue("[iis]", 1, 2, "three");
250\end{verbatim}
251
Fred Drakee058b4f1998-02-16 06:15:35 +0000252It is much more common to use \cfunction{PyObject_SetItem()} and
253friends with items whose references you are only borrowing, like
254arguments that were passed in to the function you are writing. In
255that case, their behaviour regarding reference counts is much saner,
256since you don't have to increment a reference count so you can give a
257reference away (``have it be stolen''). For example, this function
258sets all items of a list (actually, any mutable sequence) to a given
259item:
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000260
261\begin{verbatim}
262int set_all(PyObject *target, PyObject *item)
263{
264 int i, n;
Fred Drakec6fa34e1998-04-02 06:47:24 +0000265
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000266 n = PyObject_Length(target);
267 if (n < 0)
268 return -1;
269 for (i = 0; i < n; i++) {
270 if (PyObject_SetItem(target, i, item) < 0)
271 return -1;
272 }
273 return 0;
274}
275\end{verbatim}
276
277The situation is slightly different for function return values.
278While passing a reference to most functions does not change your
279ownership responsibilities for that reference, many functions that
280return a referece to an object give you ownership of the reference.
281The reason is simple: in many cases, the returned object is created
282on the fly, and the reference you get is the only reference to the
Fred Drakee058b4f1998-02-16 06:15:35 +0000283object. Therefore, the generic functions that return object
284references, like \cfunction{PyObject_GetItem()} and
285\cfunction{PySequence_GetItem()}, always return a new reference (i.e.,
286the caller becomes the owner of the reference).
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000287
288It is important to realize that whether you own a reference returned
Fred Drakee058b4f1998-02-16 06:15:35 +0000289by a function depends on which function you call only --- \emph{the
290plumage} (i.e., the type of the type of the object passed as an
291argument to the function) \emph{doesn't enter into it!} Thus, if you
292extract an item from a list using \cfunction{PyList_GetItem()}, you
293don't own the reference --- but if you obtain the same item from the
294same list using \cfunction{PySequence_GetItem()} (which happens to
295take exactly the same arguments), you do own a reference to the
296returned object.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000297
Fred Drakee058b4f1998-02-16 06:15:35 +0000298Here is an example of how you could write a function that computes the
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000299sum of the items in a list of integers; once using
Fred Drakee058b4f1998-02-16 06:15:35 +0000300\cfunction{PyList_GetItem()}, once using
301\cfunction{PySequence_GetItem()}.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000302
303\begin{verbatim}
304long sum_list(PyObject *list)
305{
306 int i, n;
307 long total = 0;
308 PyObject *item;
Fred Drakec6fa34e1998-04-02 06:47:24 +0000309
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000310 n = PyList_Size(list);
311 if (n < 0)
312 return -1; /* Not a list */
313 for (i = 0; i < n; i++) {
314 item = PyList_GetItem(list, i); /* Can't fail */
315 if (!PyInt_Check(item)) continue; /* Skip non-integers */
316 total += PyInt_AsLong(item);
317 }
318 return total;
319}
320\end{verbatim}
321
322\begin{verbatim}
323long sum_sequence(PyObject *sequence)
324{
325 int i, n;
326 long total = 0;
327 PyObject *item;
328 n = PyObject_Size(list);
329 if (n < 0)
330 return -1; /* Has no length */
331 for (i = 0; i < n; i++) {
332 item = PySequence_GetItem(list, i);
333 if (item == NULL)
334 return -1; /* Not a sequence, or other failure */
335 if (PyInt_Check(item))
336 total += PyInt_AsLong(item);
Guido van Rossum5b8a5231997-12-30 04:38:44 +0000337 Py_DECREF(item); /* Discard reference ownership */
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000338 }
339 return total;
340}
341\end{verbatim}
342
Fred Drakeefd146c1999-02-15 15:30:45 +0000343
344\subsection{Types \label{types}}
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000345
346There are few other data types that play a significant role in
Fred Drakef8830d11998-04-23 14:06:01 +0000347the Python/C API; most are simple \C{} types such as \ctype{int},
348\ctype{long}, \ctype{double} and \ctype{char *}. A few structure types
Guido van Rossum4a944d71997-08-14 20:35:38 +0000349are used to describe static tables used to list the functions exported
350by a module or the data attributes of a new object type. These will
Guido van Rossum59a61351997-08-14 20:34:33 +0000351be discussed together with the functions that use them.
352
Fred Drakeefd146c1999-02-15 15:30:45 +0000353
354\section{Exceptions \label{exceptions}}
Guido van Rossum59a61351997-08-14 20:34:33 +0000355
Guido van Rossum4a944d71997-08-14 20:35:38 +0000356The Python programmer only needs to deal with exceptions if specific
357error handling is required; unhandled exceptions are automatically
358propagated to the caller, then to the caller's caller, and so on, till
359they reach the top-level interpreter, where they are reported to the
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000360user accompanied by a stack traceback.
Guido van Rossum59a61351997-08-14 20:34:33 +0000361
Fred Drakeb0a78731998-01-13 18:51:10 +0000362For \C{} programmers, however, error checking always has to be explicit.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000363All functions in the Python/C API can raise exceptions, unless an
364explicit claim is made otherwise in a function's documentation. In
365general, when a function encounters an error, it sets an exception,
366discards any object references that it owns, and returns an
Fred Drakee058b4f1998-02-16 06:15:35 +0000367error indicator --- usually \NULL{} or \code{-1}. A few functions
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000368return a Boolean true/false result, with false indicating an error.
369Very few functions return no explicit error indicator or have an
370ambiguous return value, and require explicit testing for errors with
Fred Drakee058b4f1998-02-16 06:15:35 +0000371\cfunction{PyErr_Occurred()}.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000372
373Exception state is maintained in per-thread storage (this is
374equivalent to using global storage in an unthreaded application). A
Fred Drakec6fa34e1998-04-02 06:47:24 +0000375thread can be in one of two states: an exception has occurred, or not.
Fred Drakee058b4f1998-02-16 06:15:35 +0000376The function \cfunction{PyErr_Occurred()} can be used to check for
377this: it returns a borrowed reference to the exception type object
378when an exception has occurred, and \NULL{} otherwise. There are a
379number of functions to set the exception state:
380\cfunction{PyErr_SetString()} is the most common (though not the most
381general) function to set the exception state, and
382\cfunction{PyErr_Clear()} clears the exception state.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000383
384The full exception state consists of three objects (all of which can
Fred Drakee058b4f1998-02-16 06:15:35 +0000385be \NULL{}): the exception type, the corresponding exception
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000386value, and the traceback. These have the same meanings as the Python
387object \code{sys.exc_type}, \code{sys.exc_value},
388\code{sys.exc_traceback}; however, they are not the same: the Python
389objects represent the last exception being handled by a Python
Fred Drakee058b4f1998-02-16 06:15:35 +0000390\keyword{try} \ldots\ \keyword{except} statement, while the \C{} level
391exception state only exists while an exception is being passed on
392between \C{} functions until it reaches the Python interpreter, which
393takes care of transferring it to \code{sys.exc_type} and friends.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000394
Fred Drakec6fa34e1998-04-02 06:47:24 +0000395Note that starting with Python 1.5, the preferred, thread-safe way to
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000396access the exception state from Python code is to call the function
Fred Drakee058b4f1998-02-16 06:15:35 +0000397\function{sys.exc_info()}, which returns the per-thread exception state
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000398for Python code. Also, the semantics of both ways to access the
399exception state have changed so that a function which catches an
400exception will save and restore its thread's exception state so as to
401preserve the exception state of its caller. This prevents common bugs
402in exception handling code caused by an innocent-looking function
403overwriting the exception being handled; it also reduces the often
404unwanted lifetime extension for objects that are referenced by the
Fred Drakec6fa34e1998-04-02 06:47:24 +0000405stack frames in the traceback.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000406
407As a general principle, a function that calls another function to
408perform some task should check whether the called function raised an
409exception, and if so, pass the exception state on to its caller. It
Fred Drakee058b4f1998-02-16 06:15:35 +0000410should discard any object references that it owns, and returns an
411error indicator, but it should \emph{not} set another exception ---
412that would overwrite the exception that was just raised, and lose
413important information about the exact cause of the error.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000414
415A simple example of detecting exceptions and passing them on is shown
Fred Drakee058b4f1998-02-16 06:15:35 +0000416in the \cfunction{sum_sequence()} example above. It so happens that
417that example doesn't need to clean up any owned references when it
418detects an error. The following example function shows some error
419cleanup. First, to remind you why you like Python, we show the
420equivalent Python code:
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000421
422\begin{verbatim}
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000423def incr_item(dict, key):
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000424 try:
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000425 item = dict[key]
426 except KeyError:
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000427 item = 0
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000428 return item + 1
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000429\end{verbatim}
430
Fred Drakeb0a78731998-01-13 18:51:10 +0000431Here is the corresponding \C{} code, in all its glory:
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000432
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000433\begin{verbatim}
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000434int incr_item(PyObject *dict, PyObject *key)
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000435{
436 /* Objects all initialized to NULL for Py_XDECREF */
437 PyObject *item = NULL, *const_one = NULL, *incremented_item = NULL;
Guido van Rossum5b8a5231997-12-30 04:38:44 +0000438 int rv = -1; /* Return value initialized to -1 (failure) */
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000439
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000440 item = PyObject_GetItem(dict, key);
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000441 if (item == NULL) {
Fred Drakec6fa34e1998-04-02 06:47:24 +0000442 /* Handle KeyError only: */
443 if (!PyErr_ExceptionMatches(PyExc_KeyError)) goto error;
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000444
445 /* Clear the error and use zero: */
446 PyErr_Clear();
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000447 item = PyInt_FromLong(0L);
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000448 if (item == NULL) goto error;
449 }
450
451 const_one = PyInt_FromLong(1L);
452 if (const_one == NULL) goto error;
453
454 incremented_item = PyNumber_Add(item, const_one);
455 if (incremented_item == NULL) goto error;
456
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000457 if (PyObject_SetItem(dict, key, incremented_item) < 0) goto error;
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000458 rv = 0; /* Success */
459 /* Continue with cleanup code */
460
461 error:
462 /* Cleanup code, shared by success and failure path */
463
464 /* Use Py_XDECREF() to ignore NULL references */
465 Py_XDECREF(item);
466 Py_XDECREF(const_one);
467 Py_XDECREF(incremented_item);
468
469 return rv; /* -1 for error, 0 for success */
470}
471\end{verbatim}
472
Fred Drakef8830d11998-04-23 14:06:01 +0000473This example represents an endorsed use of the \keyword{goto} statement
Fred Drakee058b4f1998-02-16 06:15:35 +0000474in \C{}! It illustrates the use of
475\cfunction{PyErr_ExceptionMatches()} and \cfunction{PyErr_Clear()} to
476handle specific exceptions, and the use of \cfunction{Py_XDECREF()} to
477dispose of owned references that may be \NULL{} (note the \samp{X} in
478the name; \cfunction{Py_DECREF()} would crash when confronted with a
479\NULL{} reference). It is important that the variables used to hold
480owned references are initialized to \NULL{} for this to work;
481likewise, the proposed return value is initialized to \code{-1}
482(failure) and only set to success after the final call made is
483successful.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000484
Guido van Rossum59a61351997-08-14 20:34:33 +0000485
Fred Drakeefd146c1999-02-15 15:30:45 +0000486\section{Embedding Python \label{embedding}}
Guido van Rossum59a61351997-08-14 20:34:33 +0000487
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000488The one important task that only embedders (as opposed to extension
489writers) of the Python interpreter have to worry about is the
490initialization, and possibly the finalization, of the Python
491interpreter. Most functionality of the interpreter can only be used
492after the interpreter has been initialized.
Guido van Rossum59a61351997-08-14 20:34:33 +0000493
Fred Drakee058b4f1998-02-16 06:15:35 +0000494The basic initialization function is \cfunction{Py_Initialize()}.
495This initializes the table of loaded modules, and creates the
Fred Drake4de05a91998-02-16 14:25:26 +0000496fundamental modules \module{__builtin__}\refbimodindex{__builtin__},
497\module{__main__}\refbimodindex{__main__} and
498\module{sys}\refbimodindex{sys}. It also initializes the module
Fred Drakec6fa34e1998-04-02 06:47:24 +0000499search path (\code{sys.path}).%
500\indexiii{module}{search}{path}
Guido van Rossum59a61351997-08-14 20:34:33 +0000501
Fred Drakee058b4f1998-02-16 06:15:35 +0000502\cfunction{Py_Initialize()} does not set the ``script argument list''
Guido van Rossum4a944d71997-08-14 20:35:38 +0000503(\code{sys.argv}). If this variable is needed by Python code that
504will be executed later, it must be set explicitly with a call to
505\code{PySys_SetArgv(\var{argc}, \var{argv})} subsequent to the call
Fred Drakee058b4f1998-02-16 06:15:35 +0000506to \cfunction{Py_Initialize()}.
Guido van Rossum59a61351997-08-14 20:34:33 +0000507
Fred Drakeb0a78731998-01-13 18:51:10 +0000508On most systems (in particular, on \UNIX{} and Windows, although the
Fred Drakee058b4f1998-02-16 06:15:35 +0000509details are slightly different), \cfunction{Py_Initialize()}
510calculates the module search path based upon its best guess for the
511location of the standard Python interpreter executable, assuming that
512the Python library is found in a fixed location relative to the Python
Guido van Rossum42cefd01997-10-05 15:27:29 +0000513interpreter executable. In particular, it looks for a directory named
Fred Drake2de75ec1998-04-09 14:12:11 +0000514\file{lib/python1.5} (replacing \file{1.5} with the current
Guido van Rossum42cefd01997-10-05 15:27:29 +0000515interpreter version) relative to the parent directory where the
Fred Drakee058b4f1998-02-16 06:15:35 +0000516executable named \file{python} is found on the shell command search
Fred Drakec6fa34e1998-04-02 06:47:24 +0000517path (the environment variable \envvar{PATH}).
Guido van Rossum42cefd01997-10-05 15:27:29 +0000518
519For instance, if the Python executable is found in
Fred Drakee058b4f1998-02-16 06:15:35 +0000520\file{/usr/local/bin/python}, it will assume that the libraries are in
Fred Drake2de75ec1998-04-09 14:12:11 +0000521\file{/usr/local/lib/python1.5}. (In fact, this particular path
Fred Drakee058b4f1998-02-16 06:15:35 +0000522is also the ``fallback'' location, used when no executable file named
Fred Drakec6fa34e1998-04-02 06:47:24 +0000523\file{python} is found along \envvar{PATH}.) The user can override
524this behavior by setting the environment variable \envvar{PYTHONHOME},
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000525or insert additional directories in front of the standard path by
Fred Drakec6fa34e1998-04-02 06:47:24 +0000526setting \envvar{PYTHONPATH}.
Guido van Rossum59a61351997-08-14 20:34:33 +0000527
Guido van Rossum4a944d71997-08-14 20:35:38 +0000528The embedding application can steer the search by calling
529\code{Py_SetProgramName(\var{file})} \emph{before} calling
Fred Drakec6fa34e1998-04-02 06:47:24 +0000530\cfunction{Py_Initialize()}. Note that \envvar{PYTHONHOME} still
531overrides this and \envvar{PYTHONPATH} is still inserted in front of
Fred Drakee058b4f1998-02-16 06:15:35 +0000532the standard path. An application that requires total control has to
533provide its own implementation of \cfunction{Py_GetPath()},
534\cfunction{Py_GetPrefix()}, \cfunction{Py_GetExecPrefix()},
535\cfunction{Py_GetProgramFullPath()} (all defined in
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000536\file{Modules/getpath.c}).
Guido van Rossum59a61351997-08-14 20:34:33 +0000537
Guido van Rossum4a944d71997-08-14 20:35:38 +0000538Sometimes, it is desirable to ``uninitialize'' Python. For instance,
539the application may want to start over (make another call to
Fred Drakee058b4f1998-02-16 06:15:35 +0000540\cfunction{Py_Initialize()}) or the application is simply done with its
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000541use of Python and wants to free all memory allocated by Python. This
Fred Drakee058b4f1998-02-16 06:15:35 +0000542can be accomplished by calling \cfunction{Py_Finalize()}. The function
543\cfunction{Py_IsInitialized()} returns true iff Python is currently in the
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000544initialized state. More information about these functions is given in
545a later chapter.
Guido van Rossum59a61351997-08-14 20:34:33 +0000546
Guido van Rossum4a944d71997-08-14 20:35:38 +0000547
Fred Drakeefd146c1999-02-15 15:30:45 +0000548\chapter{The Very High Level Layer \label{veryhigh}}
Guido van Rossum4a944d71997-08-14 20:35:38 +0000549
Fred Drakee5bf8b21998-02-12 21:22:28 +0000550The functions in this chapter will let you execute Python source code
551given in a file or a buffer, but they will not let you interact in a
552more detailed way with the interpreter.
Guido van Rossum4a944d71997-08-14 20:35:38 +0000553
Fred Drakec6fa34e1998-04-02 06:47:24 +0000554\begin{cfuncdesc}{int}{PyRun_AnyFile}{FILE *fp, char *filename}
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000555\end{cfuncdesc}
556
Fred Drakec6fa34e1998-04-02 06:47:24 +0000557\begin{cfuncdesc}{int}{PyRun_SimpleString}{char *command}
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000558\end{cfuncdesc}
559
Fred Drakec6fa34e1998-04-02 06:47:24 +0000560\begin{cfuncdesc}{int}{PyRun_SimpleFile}{FILE *fp, char *filename}
Fred Drakee5bf8b21998-02-12 21:22:28 +0000561\end{cfuncdesc}
562
Fred Drakec6fa34e1998-04-02 06:47:24 +0000563\begin{cfuncdesc}{int}{PyRun_InteractiveOne}{FILE *fp, char *filename}
Fred Drakee5bf8b21998-02-12 21:22:28 +0000564\end{cfuncdesc}
565
Fred Drakec6fa34e1998-04-02 06:47:24 +0000566\begin{cfuncdesc}{int}{PyRun_InteractiveLoop}{FILE *fp, char *filename}
Fred Drakee5bf8b21998-02-12 21:22:28 +0000567\end{cfuncdesc}
568
Fred Drakec6fa34e1998-04-02 06:47:24 +0000569\begin{cfuncdesc}{struct _node*}{PyParser_SimpleParseString}{char *str,
570 int start}
Fred Drakee5bf8b21998-02-12 21:22:28 +0000571\end{cfuncdesc}
572
Fred Drakec6fa34e1998-04-02 06:47:24 +0000573\begin{cfuncdesc}{struct _node*}{PyParser_SimpleParseFile}{FILE *fp,
574 char *filename, int start}
Fred Drakee5bf8b21998-02-12 21:22:28 +0000575\end{cfuncdesc}
576
Fred Drakec6fa34e1998-04-02 06:47:24 +0000577\begin{cfuncdesc}{PyObject*}{PyRun_String}{char *str, int start,
578 PyObject *globals,
579 PyObject *locals}
Fred Drakee5bf8b21998-02-12 21:22:28 +0000580\end{cfuncdesc}
581
Fred Drakec6fa34e1998-04-02 06:47:24 +0000582\begin{cfuncdesc}{PyObject*}{PyRun_File}{FILE *fp, char *filename,
583 int start, PyObject *globals,
584 PyObject *locals}
Fred Drakee5bf8b21998-02-12 21:22:28 +0000585\end{cfuncdesc}
586
Fred Drakec6fa34e1998-04-02 06:47:24 +0000587\begin{cfuncdesc}{PyObject*}{Py_CompileString}{char *str, char *filename,
588 int start}
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000589\end{cfuncdesc}
590
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000591
Fred Drakeefd146c1999-02-15 15:30:45 +0000592\chapter{Reference Counting \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
Fred Drakeefd146c1999-02-15 15:30:45 +0000644\chapter{Exception Handling \label{exceptionHandling}}
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000645
646The functions in this chapter will let you handle and raise Python
Guido van Rossumae110af1997-05-22 20:11:52 +0000647exceptions. It is important to understand some of the basics of
Fred Drakeb0a78731998-01-13 18:51:10 +0000648Python exception handling. It works somewhat like the \UNIX{}
Fred Drakef8830d11998-04-23 14:06:01 +0000649\cdata{errno} variable: there is a global indicator (per thread) of the
Guido van Rossumae110af1997-05-22 20:11:52 +0000650last error that occurred. Most functions don't clear this on success,
651but will set it to indicate the cause of the error on failure. Most
652functions also return an error indicator, usually \NULL{} if they are
Fred Drakee058b4f1998-02-16 06:15:35 +0000653supposed to return a pointer, or \code{-1} if they return an integer
Fred Drakef8830d11998-04-23 14:06:01 +0000654(exception: the \cfunction{PyArg_Parse*()} functions return \code{1} for
Fred Drakee058b4f1998-02-16 06:15:35 +0000655success and \code{0} for failure). When a function must fail because
656some function it called failed, it generally doesn't set the error
657indicator; the function it called already set it.
Guido van Rossumae110af1997-05-22 20:11:52 +0000658
659The error indicator consists of three Python objects corresponding to
660the Python variables \code{sys.exc_type}, \code{sys.exc_value} and
661\code{sys.exc_traceback}. API functions exist to interact with the
662error indicator in various ways. There is a separate error indicator
663for each thread.
664
665% XXX Order of these should be more thoughtful.
666% Either alphabetical or some kind of structure.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000667
668\begin{cfuncdesc}{void}{PyErr_Print}{}
Guido van Rossumae110af1997-05-22 20:11:52 +0000669Print a standard traceback to \code{sys.stderr} and clear the error
670indicator. Call this function only when the error indicator is set.
671(Otherwise it will cause a fatal error!)
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000672\end{cfuncdesc}
673
Fred Drakec6fa34e1998-04-02 06:47:24 +0000674\begin{cfuncdesc}{PyObject*}{PyErr_Occurred}{}
Guido van Rossumae110af1997-05-22 20:11:52 +0000675Test whether the error indicator is set. If set, return the exception
Fred Drakee058b4f1998-02-16 06:15:35 +0000676\emph{type} (the first argument to the last call to one of the
Fred Drakef8830d11998-04-23 14:06:01 +0000677\cfunction{PyErr_Set*()} functions or to \cfunction{PyErr_Restore()}). If
Fred Drakee058b4f1998-02-16 06:15:35 +0000678not set, return \NULL{}. You do not own a reference to the return
679value, so you do not need to \cfunction{Py_DECREF()} it.
680\strong{Note:} do not compare the return value to a specific
681exception; use \cfunction{PyErr_ExceptionMatches()} instead, shown
682below.
Guido van Rossum42cefd01997-10-05 15:27:29 +0000683\end{cfuncdesc}
684
685\begin{cfuncdesc}{int}{PyErr_ExceptionMatches}{PyObject *exc}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000686Equivalent to
Fred Drakee058b4f1998-02-16 06:15:35 +0000687\samp{PyErr_GivenExceptionMatches(PyErr_Occurred(), \var{exc})}.
Guido van Rossum42cefd01997-10-05 15:27:29 +0000688This should only be called when an exception is actually set.
689\end{cfuncdesc}
690
691\begin{cfuncdesc}{int}{PyErr_GivenExceptionMatches}{PyObject *given, PyObject *exc}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000692Return true if the \var{given} exception matches the exception in
693\var{exc}. If \var{exc} is a class object, this also returns true
694when \var{given} is a subclass. If \var{exc} is a tuple, all
695exceptions in the tuple (and recursively in subtuples) are searched
696for a match. This should only be called when an exception is actually
697set.
698\end{cfuncdesc}
699
700\begin{cfuncdesc}{void}{PyErr_NormalizeException}{PyObject**exc, PyObject**val, PyObject**tb}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000701Under certain circumstances, the values returned by
Fred Drakee058b4f1998-02-16 06:15:35 +0000702\cfunction{PyErr_Fetch()} below can be ``unnormalized'', meaning that
703\code{*\var{exc}} is a class object but \code{*\var{val}} is not an
704instance of the same class. This function can be used to instantiate
705the class in that case. If the values are already normalized, nothing
706happens.
Guido van Rossumae110af1997-05-22 20:11:52 +0000707\end{cfuncdesc}
708
709\begin{cfuncdesc}{void}{PyErr_Clear}{}
710Clear the error indicator. If the error indicator is not set, there
711is no effect.
712\end{cfuncdesc}
713
714\begin{cfuncdesc}{void}{PyErr_Fetch}{PyObject **ptype, PyObject **pvalue, PyObject **ptraceback}
715Retrieve the error indicator into three variables whose addresses are
716passed. If the error indicator is not set, set all three variables to
717\NULL{}. If it is set, it will be cleared and you own a reference to
718each object retrieved. The value and traceback object may be \NULL{}
719even when the type object is not. \strong{Note:} this function is
720normally only used by code that needs to handle exceptions or by code
721that needs to save and restore the error indicator temporarily.
722\end{cfuncdesc}
723
724\begin{cfuncdesc}{void}{PyErr_Restore}{PyObject *type, PyObject *value, PyObject *traceback}
725Set the error indicator from the three objects. If the error
726indicator is already set, it is cleared first. If the objects are
727\NULL{}, the error indicator is cleared. Do not pass a \NULL{} type
728and non-\NULL{} value or traceback. The exception type should be a
729string or class; if it is a class, the value should be an instance of
730that class. Do not pass an invalid exception type or value.
731(Violating these rules will cause subtle problems later.) This call
732takes away a reference to each object, i.e. you must own a reference
733to each object before the call and after the call you no longer own
734these references. (If you don't understand this, don't use this
735function. I warned you.) \strong{Note:} this function is normally
736only used by code that needs to save and restore the error indicator
737temporarily.
738\end{cfuncdesc}
739
740\begin{cfuncdesc}{void}{PyErr_SetString}{PyObject *type, char *message}
741This is the most common way to set the error indicator. The first
742argument specifies the exception type; it is normally one of the
Fred Drakef8830d11998-04-23 14:06:01 +0000743standard exceptions, e.g. \cdata{PyExc_RuntimeError}. You need not
Guido van Rossumae110af1997-05-22 20:11:52 +0000744increment its reference count. The second argument is an error
745message; it is converted to a string object.
746\end{cfuncdesc}
747
748\begin{cfuncdesc}{void}{PyErr_SetObject}{PyObject *type, PyObject *value}
Fred Drakee058b4f1998-02-16 06:15:35 +0000749This function is similar to \cfunction{PyErr_SetString()} but lets you
Guido van Rossumae110af1997-05-22 20:11:52 +0000750specify an arbitrary Python object for the ``value'' of the exception.
751You need not increment its reference count.
752\end{cfuncdesc}
753
754\begin{cfuncdesc}{void}{PyErr_SetNone}{PyObject *type}
Fred Drakee058b4f1998-02-16 06:15:35 +0000755This is a shorthand for \samp{PyErr_SetObject(\var{type}, Py_None)}.
Guido van Rossumae110af1997-05-22 20:11:52 +0000756\end{cfuncdesc}
757
758\begin{cfuncdesc}{int}{PyErr_BadArgument}{}
Fred Drakee058b4f1998-02-16 06:15:35 +0000759This is a shorthand for \samp{PyErr_SetString(PyExc_TypeError,
Guido van Rossumae110af1997-05-22 20:11:52 +0000760\var{message})}, where \var{message} indicates that a built-in operation
761was invoked with an illegal argument. It is mostly for internal use.
762\end{cfuncdesc}
763
Fred Drakec6fa34e1998-04-02 06:47:24 +0000764\begin{cfuncdesc}{PyObject*}{PyErr_NoMemory}{}
Fred Drakee058b4f1998-02-16 06:15:35 +0000765This is a shorthand for \samp{PyErr_SetNone(PyExc_MemoryError)}; it
Guido van Rossumae110af1997-05-22 20:11:52 +0000766returns \NULL{} so an object allocation function can write
Fred Drakee058b4f1998-02-16 06:15:35 +0000767\samp{return PyErr_NoMemory();} when it runs out of memory.
Guido van Rossumae110af1997-05-22 20:11:52 +0000768\end{cfuncdesc}
769
Fred Drakec6fa34e1998-04-02 06:47:24 +0000770\begin{cfuncdesc}{PyObject*}{PyErr_SetFromErrno}{PyObject *type}
Fred Drakeb0a78731998-01-13 18:51:10 +0000771This is a convenience function to raise an exception when a \C{} library
Fred Drakef8830d11998-04-23 14:06:01 +0000772function has returned an error and set the \C{} variable \cdata{errno}.
Guido van Rossumae110af1997-05-22 20:11:52 +0000773It constructs a tuple object whose first item is the integer
Fred Drakef8830d11998-04-23 14:06:01 +0000774\cdata{errno} value and whose second item is the corresponding error
Fred Drakee058b4f1998-02-16 06:15:35 +0000775message (gotten from \cfunction{strerror()}), and then calls
776\samp{PyErr_SetObject(\var{type}, \var{object})}. On \UNIX{}, when
Fred Drakef8830d11998-04-23 14:06:01 +0000777the \cdata{errno} value is \constant{EINTR}, indicating an interrupted
Fred Drakee058b4f1998-02-16 06:15:35 +0000778system call, this calls \cfunction{PyErr_CheckSignals()}, and if that set
Guido van Rossumae110af1997-05-22 20:11:52 +0000779the error indicator, leaves it set to that. The function always
780returns \NULL{}, so a wrapper function around a system call can write
Fred Drakee058b4f1998-02-16 06:15:35 +0000781\samp{return PyErr_SetFromErrno();} when the system call returns an
782error.
Guido van Rossumae110af1997-05-22 20:11:52 +0000783\end{cfuncdesc}
784
785\begin{cfuncdesc}{void}{PyErr_BadInternalCall}{}
Fred Drakee058b4f1998-02-16 06:15:35 +0000786This is a shorthand for \samp{PyErr_SetString(PyExc_TypeError,
Guido van Rossumae110af1997-05-22 20:11:52 +0000787\var{message})}, where \var{message} indicates that an internal
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000788operation (e.g. a Python/C API function) was invoked with an illegal
Guido van Rossumae110af1997-05-22 20:11:52 +0000789argument. It is mostly for internal use.
790\end{cfuncdesc}
791
792\begin{cfuncdesc}{int}{PyErr_CheckSignals}{}
793This function interacts with Python's signal handling. It checks
794whether a signal has been sent to the processes and if so, invokes the
Fred Drake4de05a91998-02-16 14:25:26 +0000795corresponding signal handler. If the
796\module{signal}\refbimodindex{signal} module is supported, this can
797invoke a signal handler written in Python. In all cases, the default
798effect for \constant{SIGINT} is to raise the
799\exception{KeyboadInterrupt} exception. If an exception is raised the
Fred Drakee058b4f1998-02-16 06:15:35 +0000800error indicator is set and the function returns \code{1}; otherwise
801the function returns \code{0}. The error indicator may or may not be
802cleared if it was previously set.
Guido van Rossumae110af1997-05-22 20:11:52 +0000803\end{cfuncdesc}
804
805\begin{cfuncdesc}{void}{PyErr_SetInterrupt}{}
806This function is obsolete (XXX or platform dependent?). It simulates
Fred Drakee058b4f1998-02-16 06:15:35 +0000807the effect of a \constant{SIGINT} signal arriving --- the next time
808\cfunction{PyErr_CheckSignals()} is called,
809\exception{KeyboadInterrupt} will be raised.
Guido van Rossumae110af1997-05-22 20:11:52 +0000810\end{cfuncdesc}
811
Fred Drakec6fa34e1998-04-02 06:47:24 +0000812\begin{cfuncdesc}{PyObject*}{PyErr_NewException}{char *name,
813 PyObject *base,
814 PyObject *dict}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000815This utility function creates and returns a new exception object. The
Fred Drakeb0a78731998-01-13 18:51:10 +0000816\var{name} argument must be the name of the new exception, a \C{} string
Guido van Rossum42cefd01997-10-05 15:27:29 +0000817of the form \code{module.class}. The \var{base} and \var{dict}
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000818arguments are normally \NULL{}. Normally, this creates a class
Guido van Rossum42cefd01997-10-05 15:27:29 +0000819object derived from the root for all exceptions, the built-in name
Fred Drakef8830d11998-04-23 14:06:01 +0000820\exception{Exception} (accessible in \C{} as \cdata{PyExc_Exception}).
821In this case the \member{__module__} attribute of the new class is set to the
Guido van Rossum42cefd01997-10-05 15:27:29 +0000822first part (up to the last dot) of the \var{name} argument, and the
823class name is set to the last part (after the last dot). When the
824user has specified the \code{-X} command line option to use string
825exceptions, for backward compatibility, or when the \var{base}
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000826argument is not a class object (and not \NULL{}), a string object
Guido van Rossum42cefd01997-10-05 15:27:29 +0000827created from the entire \var{name} argument is returned. The
828\var{base} argument can be used to specify an alternate base class.
829The \var{dict} argument can be used to specify a dictionary of class
830variables and methods.
831\end{cfuncdesc}
832
833
Fred Drakeefd146c1999-02-15 15:30:45 +0000834\section{Standard Exceptions \label{standardExceptions}}
Guido van Rossumae110af1997-05-22 20:11:52 +0000835
836All standard Python exceptions are available as global variables whose
Fred Drakee058b4f1998-02-16 06:15:35 +0000837names are \samp{PyExc_} followed by the Python exception name.
Fred Drakef8830d11998-04-23 14:06:01 +0000838These have the type \ctype{PyObject *}; they are all either class
Fred Drakee058b4f1998-02-16 06:15:35 +0000839objects or string objects, depending on the use of the \code{-X}
840option to the interpreter. For completeness, here are all the
Fred Drake9d20ac31998-02-16 15:27:08 +0000841variables:
Fred Drakef8830d11998-04-23 14:06:01 +0000842\cdata{PyExc_Exception},
843\cdata{PyExc_StandardError},
844\cdata{PyExc_ArithmeticError},
845\cdata{PyExc_LookupError},
846\cdata{PyExc_AssertionError},
847\cdata{PyExc_AttributeError},
848\cdata{PyExc_EOFError},
Fred Drake127ed0a1999-02-17 23:09:05 +0000849\cdata{PyExc_EnvironmentError},
Fred Drakef8830d11998-04-23 14:06:01 +0000850\cdata{PyExc_FloatingPointError},
851\cdata{PyExc_IOError},
852\cdata{PyExc_ImportError},
853\cdata{PyExc_IndexError},
854\cdata{PyExc_KeyError},
855\cdata{PyExc_KeyboardInterrupt},
856\cdata{PyExc_MemoryError},
857\cdata{PyExc_NameError},
Fred Drake127ed0a1999-02-17 23:09:05 +0000858\cdata{PyExc_NotImplementedError},
859\cdata{PyExc_OSError},
Fred Drakef8830d11998-04-23 14:06:01 +0000860\cdata{PyExc_OverflowError},
861\cdata{PyExc_RuntimeError},
862\cdata{PyExc_SyntaxError},
863\cdata{PyExc_SystemError},
864\cdata{PyExc_SystemExit},
865\cdata{PyExc_TypeError},
866\cdata{PyExc_ValueError},
867\cdata{PyExc_ZeroDivisionError}.
Guido van Rossumae110af1997-05-22 20:11:52 +0000868
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000869
Fred Drakeefd146c1999-02-15 15:30:45 +0000870\chapter{Utilities \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
Fred Drakeefd146c1999-02-15 15:30:45 +0000876\section{OS Utilities \label{os}}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000877
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000878\begin{cfuncdesc}{int}{Py_FdIsInteractive}{FILE *fp, char *filename}
Fred Drakee058b4f1998-02-16 06:15:35 +0000879Return true (nonzero) if the standard I/O file \var{fp} with name
880\var{filename} is deemed interactive. This is the case for files for
881which \samp{isatty(fileno(\var{fp}))} is true. If the global flag
Fred Drakef8830d11998-04-23 14:06:01 +0000882\cdata{Py_InteractiveFlag} is true, this function also returns true if
Fred Drakee058b4f1998-02-16 06:15:35 +0000883the \var{name} pointer is \NULL{} or if the name is equal to one of
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000884the strings \code{"<stdin>"} or \code{"???"}.
885\end{cfuncdesc}
886
887\begin{cfuncdesc}{long}{PyOS_GetLastModificationTime}{char *filename}
Fred Drakee058b4f1998-02-16 06:15:35 +0000888Return the time of last modification of the file \var{filename}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000889The result is encoded in the same way as the timestamp returned by
Fred Drakee058b4f1998-02-16 06:15:35 +0000890the standard \C{} library function \cfunction{time()}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000891\end{cfuncdesc}
892
893
Fred Drakeefd146c1999-02-15 15:30:45 +0000894\section{Process Control \label{processControl}}
Fred Drakee5bf8b21998-02-12 21:22:28 +0000895
896\begin{cfuncdesc}{void}{Py_FatalError}{char *message}
897Print a fatal error message and kill the process. No cleanup is
898performed. This function should only be invoked when a condition is
899detected that would make it dangerous to continue using the Python
900interpreter; e.g., when the object administration appears to be
Fred Drakee058b4f1998-02-16 06:15:35 +0000901corrupted. On \UNIX{}, the standard \C{} library function
902\cfunction{abort()} is called which will attempt to produce a
903\file{core} file.
Fred Drakee5bf8b21998-02-12 21:22:28 +0000904\end{cfuncdesc}
905
906\begin{cfuncdesc}{void}{Py_Exit}{int status}
Fred Drakee058b4f1998-02-16 06:15:35 +0000907Exit the current process. This calls \cfunction{Py_Finalize()} and
908then calls the standard \C{} library function
909\code{exit(\var{status})}.
Fred Drakee5bf8b21998-02-12 21:22:28 +0000910\end{cfuncdesc}
911
912\begin{cfuncdesc}{int}{Py_AtExit}{void (*func) ()}
913Register a cleanup function to be called by \cfunction{Py_Finalize()}.
914The cleanup function will be called with no arguments and should
915return no value. At most 32 cleanup functions can be registered.
916When the registration is successful, \cfunction{Py_AtExit()} returns
917\code{0}; on failure, it returns \code{-1}. The cleanup function
918registered last is called first. Each cleanup function will be called
919at most once. Since Python's internal finallization will have
920completed before the cleanup function, no Python APIs should be called
921by \var{func}.
922\end{cfuncdesc}
923
924
Fred Drakeefd146c1999-02-15 15:30:45 +0000925\section{Importing Modules \label{importing}}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000926
Fred Drakec6fa34e1998-04-02 06:47:24 +0000927\begin{cfuncdesc}{PyObject*}{PyImport_ImportModule}{char *name}
Fred Drakee058b4f1998-02-16 06:15:35 +0000928This is a simplified interface to \cfunction{PyImport_ImportModuleEx()}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000929below, leaving the \var{globals} and \var{locals} arguments set to
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000930\NULL{}. When the \var{name} argument contains a dot (i.e., when
Guido van Rossum42cefd01997-10-05 15:27:29 +0000931it specifies a submodule of a package), the \var{fromlist} argument is
932set to the list \code{['*']} so that the return value is the named
933module rather than the top-level package containing it as would
934otherwise be the case. (Unfortunately, this has an additional side
935effect when \var{name} in fact specifies a subpackage instead of a
936submodule: the submodules specified in the package's \code{__all__}
937variable are loaded.) Return a new reference to the imported module,
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000938or \NULL{} with an exception set on failure (the module may still
Fred Drakec6fa34e1998-04-02 06:47:24 +0000939be created in this case --- examine \code{sys.modules} to find out).
Guido van Rossum42cefd01997-10-05 15:27:29 +0000940\end{cfuncdesc}
941
Fred Drakec6fa34e1998-04-02 06:47:24 +0000942\begin{cfuncdesc}{PyObject*}{PyImport_ImportModuleEx}{char *name, PyObject *globals, PyObject *locals, PyObject *fromlist}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000943Import a module. This is best described by referring to the built-in
Fred Drake53fb7721998-02-16 06:23:20 +0000944Python function \function{__import__()}\bifuncindex{__import__}, as
945the standard \function{__import__()} function calls this function
946directly.
Guido van Rossum42cefd01997-10-05 15:27:29 +0000947
Guido van Rossum42cefd01997-10-05 15:27:29 +0000948The return value is a new reference to the imported module or
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000949top-level package, or \NULL{} with an exception set on failure
Guido van Rossumc44d3d61997-10-06 05:10:47 +0000950(the module may still be created in this case). Like for
Fred Drakee058b4f1998-02-16 06:15:35 +0000951\function{__import__()}, the return value when a submodule of a
952package was requested is normally the top-level package, unless a
953non-empty \var{fromlist} was given.
Guido van Rossum42cefd01997-10-05 15:27:29 +0000954\end{cfuncdesc}
955
Fred Drakec6fa34e1998-04-02 06:47:24 +0000956\begin{cfuncdesc}{PyObject*}{PyImport_Import}{PyObject *name}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000957This is a higher-level interface that calls the current ``import hook
Fred Drakee058b4f1998-02-16 06:15:35 +0000958function''. It invokes the \function{__import__()} function from the
Guido van Rossum42cefd01997-10-05 15:27:29 +0000959\code{__builtins__} of the current globals. This means that the
960import is done using whatever import hooks are installed in the
Fred Drake4de05a91998-02-16 14:25:26 +0000961current environment, e.g. by \module{rexec}\refstmodindex{rexec} or
962\module{ihooks}\refstmodindex{ihooks}.
Guido van Rossum42cefd01997-10-05 15:27:29 +0000963\end{cfuncdesc}
964
Fred Drakec6fa34e1998-04-02 06:47:24 +0000965\begin{cfuncdesc}{PyObject*}{PyImport_ReloadModule}{PyObject *m}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000966Reload a module. This is best described by referring to the built-in
Fred Drake53fb7721998-02-16 06:23:20 +0000967Python function \function{reload()}\bifuncindex{reload}, as the standard
Fred Drakee058b4f1998-02-16 06:15:35 +0000968\function{reload()} function calls this function directly. Return a
969new reference to the reloaded module, or \NULL{} with an exception set
970on failure (the module still exists in this case).
Guido van Rossum42cefd01997-10-05 15:27:29 +0000971\end{cfuncdesc}
972
Fred Drakec6fa34e1998-04-02 06:47:24 +0000973\begin{cfuncdesc}{PyObject*}{PyImport_AddModule}{char *name}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000974Return the module object corresponding to a module name. The
975\var{name} argument may be of the form \code{package.module}). First
976check the modules dictionary if there's one there, and if not, create
977a new one and insert in in the modules dictionary. Because the former
978action is most common, this does not return a new reference, and you
Guido van Rossuma096a2e1998-11-02 17:02:42 +0000979do not own the returned reference.
980Warning: this function does not load or import the module; if the
981module wasn't already loaded, you will get an empty module object.
982Use \cfunction{PyImport_ImportModule()} or one of its variants to
983import a module.
984Return \NULL{} with an
Fred Drakef8830d11998-04-23 14:06:01 +0000985exception set on failure. \strong{Note:} this function returns
Guido van Rossum44475131998-04-21 15:30:01 +0000986a ``borrowed'' reference.
Guido van Rossum42cefd01997-10-05 15:27:29 +0000987\end{cfuncdesc}
988
Fred Drakec6fa34e1998-04-02 06:47:24 +0000989\begin{cfuncdesc}{PyObject*}{PyImport_ExecCodeModule}{char *name, PyObject *co}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000990Given a module name (possibly of the form \code{package.module}) and a
991code object read from a Python bytecode file or obtained from the
Fred Drake53fb7721998-02-16 06:23:20 +0000992built-in function \function{compile()}\bifuncindex{compile}, load the
993module. Return a new reference to the module object, or \NULL{} with
994an exception set if an error occurred (the module may still be created
995in this case). (This function would reload the module if it was
996already imported.)
Guido van Rossum42cefd01997-10-05 15:27:29 +0000997\end{cfuncdesc}
998
999\begin{cfuncdesc}{long}{PyImport_GetMagicNumber}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00001000Return the magic number for Python bytecode files (a.k.a. \file{.pyc}
1001and \file{.pyo} files). The magic number should be present in the
Guido van Rossum42cefd01997-10-05 15:27:29 +00001002first four bytes of the bytecode file, in little-endian byte order.
1003\end{cfuncdesc}
1004
Fred Drakec6fa34e1998-04-02 06:47:24 +00001005\begin{cfuncdesc}{PyObject*}{PyImport_GetModuleDict}{}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001006Return the dictionary used for the module administration
1007(a.k.a. \code{sys.modules}). Note that this is a per-interpreter
1008variable.
1009\end{cfuncdesc}
1010
1011\begin{cfuncdesc}{void}{_PyImport_Init}{}
1012Initialize the import mechanism. For internal use only.
1013\end{cfuncdesc}
1014
1015\begin{cfuncdesc}{void}{PyImport_Cleanup}{}
1016Empty the module table. For internal use only.
1017\end{cfuncdesc}
1018
1019\begin{cfuncdesc}{void}{_PyImport_Fini}{}
1020Finalize the import mechanism. For internal use only.
1021\end{cfuncdesc}
1022
Fred Drakec6fa34e1998-04-02 06:47:24 +00001023\begin{cfuncdesc}{PyObject*}{_PyImport_FindExtension}{char *, char *}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001024For internal use only.
Guido van Rossum5b8a5231997-12-30 04:38:44 +00001025\end{cfuncdesc}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001026
Fred Drakec6fa34e1998-04-02 06:47:24 +00001027\begin{cfuncdesc}{PyObject*}{_PyImport_FixupExtension}{char *, char *}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001028For internal use only.
Guido van Rossum5b8a5231997-12-30 04:38:44 +00001029\end{cfuncdesc}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001030
1031\begin{cfuncdesc}{int}{PyImport_ImportFrozenModule}{char *}
1032Load a frozen module. Return \code{1} for success, \code{0} if the
1033module is not found, and \code{-1} with an exception set if the
1034initialization failed. To access the imported module on a successful
Fred Drakee058b4f1998-02-16 06:15:35 +00001035load, use \cfunction{PyImport_ImportModule()}.
1036(Note the misnomer --- this function would reload the module if it was
Guido van Rossum42cefd01997-10-05 15:27:29 +00001037already imported.)
1038\end{cfuncdesc}
1039
1040\begin{ctypedesc}{struct _frozen}
1041This is the structure type definition for frozen module descriptors,
Fred Drakec6fa34e1998-04-02 06:47:24 +00001042as generated by the \program{freeze}\index{freeze utility} utility
1043(see \file{Tools/freeze/} in the Python source distribution). Its
1044definition is:
1045
Guido van Rossum9faf4c51997-10-07 14:38:54 +00001046\begin{verbatim}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001047struct _frozen {
Fred Drake36fbe761997-10-13 18:18:33 +00001048 char *name;
1049 unsigned char *code;
1050 int size;
Guido van Rossum42cefd01997-10-05 15:27:29 +00001051};
Guido van Rossum9faf4c51997-10-07 14:38:54 +00001052\end{verbatim}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001053\end{ctypedesc}
1054
Fred Drakec6fa34e1998-04-02 06:47:24 +00001055\begin{cvardesc}{struct _frozen*}{PyImport_FrozenModules}
Fred Drakef8830d11998-04-23 14:06:01 +00001056This pointer is initialized to point to an array of \ctype{struct
Guido van Rossum580aa8d1997-11-25 15:34:51 +00001057_frozen} records, terminated by one whose members are all \NULL{}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001058or zero. When a frozen module is imported, it is searched in this
Fred Drakec6fa34e1998-04-02 06:47:24 +00001059table. Third-party code could play tricks with this to provide a
Guido van Rossum42cefd01997-10-05 15:27:29 +00001060dynamically created collection of frozen modules.
1061\end{cvardesc}
1062
1063
Fred Drakeefd146c1999-02-15 15:30:45 +00001064\chapter{Abstract Objects Layer \label{abstract}}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001065
1066The functions in this chapter interact with Python objects regardless
1067of their type, or with wide classes of object types (e.g. all
1068numerical types, or all sequence types). When used on object types
1069for which they do not apply, they will flag a Python exception.
1070
Fred Drakeefd146c1999-02-15 15:30:45 +00001071\section{Object Protocol \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
Guido van Rossumd1dbf631999-01-22 20:10:49 +00001262\begin{cfuncdesc}{int}{PyObject_DelItem}{PyObject *o, PyObject *key}
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
Fred Drakeefd146c1999-02-15 15:30:45 +00001269\section{Number Protocol \label{number}}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001270
1271\begin{cfuncdesc}{int}{PyNumber_Check}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001272Returns \code{1} if the object \var{o} provides numeric protocols, and
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001273false otherwise.
1274This function always succeeds.
1275\end{cfuncdesc}
1276
1277
1278\begin{cfuncdesc}{PyObject*}{PyNumber_Add}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001279Returns the result of adding \var{o1} and \var{o2}, or \NULL{} on
1280failure. This is the equivalent of the Python expression
1281\samp{\var{o1} + \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001282\end{cfuncdesc}
1283
1284
1285\begin{cfuncdesc}{PyObject*}{PyNumber_Subtract}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001286Returns the result of subtracting \var{o2} from \var{o1}, or \NULL{}
1287on failure. This is the equivalent of the Python expression
1288\samp{\var{o1} - \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001289\end{cfuncdesc}
1290
1291
1292\begin{cfuncdesc}{PyObject*}{PyNumber_Multiply}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001293Returns the result of multiplying \var{o1} and \var{o2}, or \NULL{} on
1294failure. This is the equivalent of the Python expression
1295\samp{\var{o1} * \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001296\end{cfuncdesc}
1297
1298
1299\begin{cfuncdesc}{PyObject*}{PyNumber_Divide}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001300Returns the result of dividing \var{o1} by \var{o2}, or \NULL{} on
1301failure.
1302This is the equivalent of the Python expression \samp{\var{o1} /
1303\var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001304\end{cfuncdesc}
1305
1306
1307\begin{cfuncdesc}{PyObject*}{PyNumber_Remainder}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001308Returns the remainder of dividing \var{o1} by \var{o2}, or \NULL{} on
1309failure. This is the equivalent of the Python expression
1310\samp{\var{o1} \% \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001311\end{cfuncdesc}
1312
1313
1314\begin{cfuncdesc}{PyObject*}{PyNumber_Divmod}{PyObject *o1, PyObject *o2}
Fred Drake53fb7721998-02-16 06:23:20 +00001315See the built-in function \function{divmod()}\bifuncindex{divmod}.
1316Returns \NULL{} on failure. This is the equivalent of the Python
1317expression \samp{divmod(\var{o1}, \var{o2})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001318\end{cfuncdesc}
1319
1320
1321\begin{cfuncdesc}{PyObject*}{PyNumber_Power}{PyObject *o1, PyObject *o2, PyObject *o3}
Fred Drake53fb7721998-02-16 06:23:20 +00001322See the built-in function \function{pow()}\bifuncindex{pow}. Returns
1323\NULL{} on failure. This is the equivalent of the Python expression
Fred Drakee058b4f1998-02-16 06:15:35 +00001324\samp{pow(\var{o1}, \var{o2}, \var{o3})}, where \var{o3} is optional.
Fred Drakef8830d11998-04-23 14:06:01 +00001325If \var{o3} is to be ignored, pass \cdata{Py_None} in its place.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001326\end{cfuncdesc}
1327
1328
1329\begin{cfuncdesc}{PyObject*}{PyNumber_Negative}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001330Returns the negation of \var{o} on success, or \NULL{} on failure.
1331This is the equivalent of the Python expression \samp{-\var{o}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001332\end{cfuncdesc}
1333
1334
1335\begin{cfuncdesc}{PyObject*}{PyNumber_Positive}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001336Returns \var{o} on success, or \NULL{} on failure.
1337This is the equivalent of the Python expression \samp{+\var{o}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001338\end{cfuncdesc}
1339
1340
1341\begin{cfuncdesc}{PyObject*}{PyNumber_Absolute}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001342Returns the absolute value of \var{o}, or \NULL{} on failure. This is
1343the equivalent of the Python expression \samp{abs(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001344\end{cfuncdesc}
1345
1346
1347\begin{cfuncdesc}{PyObject*}{PyNumber_Invert}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001348Returns the bitwise negation of \var{o} on success, or \NULL{} on
1349failure. This is the equivalent of the Python expression
1350\samp{\~\var{o}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001351\end{cfuncdesc}
1352
1353
1354\begin{cfuncdesc}{PyObject*}{PyNumber_Lshift}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001355Returns the result of left shifting \var{o1} by \var{o2} on success,
1356or \NULL{} on failure. This is the equivalent of the Python
1357expression \samp{\var{o1} << \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001358\end{cfuncdesc}
1359
1360
1361\begin{cfuncdesc}{PyObject*}{PyNumber_Rshift}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001362Returns the result of right shifting \var{o1} by \var{o2} on success,
1363or \NULL{} on failure. This is the equivalent of the Python
1364expression \samp{\var{o1} >> \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001365\end{cfuncdesc}
1366
1367
1368\begin{cfuncdesc}{PyObject*}{PyNumber_And}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001369Returns the result of ``anding'' \var{o2} and \var{o2} on success and
1370\NULL{} on failure. This is the equivalent of the Python
1371expression \samp{\var{o1} and \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001372\end{cfuncdesc}
1373
1374
1375\begin{cfuncdesc}{PyObject*}{PyNumber_Xor}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001376Returns the bitwise exclusive or of \var{o1} by \var{o2} on success,
1377or \NULL{} on failure. This is the equivalent of the Python
1378expression \samp{\var{o1} \^{ }\var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001379\end{cfuncdesc}
1380
1381\begin{cfuncdesc}{PyObject*}{PyNumber_Or}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001382Returns the result of \var{o1} and \var{o2} on success, or \NULL{} on
1383failure. This is the equivalent of the Python expression
1384\samp{\var{o1} or \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001385\end{cfuncdesc}
1386
1387
Fred Drakee058b4f1998-02-16 06:15:35 +00001388\begin{cfuncdesc}{PyObject*}{PyNumber_Coerce}{PyObject **p1, PyObject **p2}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001389This function takes the addresses of two variables of type
Fred Drakef8830d11998-04-23 14:06:01 +00001390\ctype{PyObject*}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001391
Fred Drakee058b4f1998-02-16 06:15:35 +00001392If the objects pointed to by \code{*\var{p1}} and \code{*\var{p2}}
1393have the same type, increment their reference count and return
1394\code{0} (success). If the objects can be converted to a common
1395numeric type, replace \code{*p1} and \code{*p2} by their converted
1396value (with 'new' reference counts), and return \code{0}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001397If no conversion is possible, or if some other error occurs,
Fred Drakee058b4f1998-02-16 06:15:35 +00001398return \code{-1} (failure) and don't increment the reference counts.
1399The call \code{PyNumber_Coerce(\&o1, \&o2)} is equivalent to the
1400Python statement \samp{\var{o1}, \var{o2} = coerce(\var{o1},
1401\var{o2})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001402\end{cfuncdesc}
1403
1404
1405\begin{cfuncdesc}{PyObject*}{PyNumber_Int}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001406Returns the \var{o} converted to an integer object on success, or
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001407\NULL{} on failure. This is the equivalent of the Python
Fred Drakee058b4f1998-02-16 06:15:35 +00001408expression \samp{int(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001409\end{cfuncdesc}
1410
1411
1412\begin{cfuncdesc}{PyObject*}{PyNumber_Long}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001413Returns the \var{o} converted to a long integer object on success,
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001414or \NULL{} on failure. This is the equivalent of the Python
Fred Drakee058b4f1998-02-16 06:15:35 +00001415expression \samp{long(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001416\end{cfuncdesc}
1417
1418
1419\begin{cfuncdesc}{PyObject*}{PyNumber_Float}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001420Returns the \var{o} converted to a float object on success, or \NULL{}
1421on failure. This is the equivalent of the Python expression
1422\samp{float(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001423\end{cfuncdesc}
1424
1425
Fred Drakeefd146c1999-02-15 15:30:45 +00001426\section{Sequence Protocol \label{sequence}}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001427
1428\begin{cfuncdesc}{int}{PySequence_Check}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001429Return \code{1} if the object provides sequence protocol, and \code{0}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001430otherwise.
1431This function always succeeds.
1432\end{cfuncdesc}
1433
1434
1435\begin{cfuncdesc}{PyObject*}{PySequence_Concat}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001436Return the concatenation of \var{o1} and \var{o2} on success, and \NULL{} on
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001437failure. This is the equivalent of the Python
Fred Drakee058b4f1998-02-16 06:15:35 +00001438expression \samp{\var{o1} + \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001439\end{cfuncdesc}
1440
1441
1442\begin{cfuncdesc}{PyObject*}{PySequence_Repeat}{PyObject *o, int count}
Fred Drakee058b4f1998-02-16 06:15:35 +00001443Return the result of repeating sequence object \var{o} \var{count}
1444times, or \NULL{} on failure. This is the equivalent of the Python
1445expression \samp{\var{o} * \var{count}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001446\end{cfuncdesc}
1447
1448
1449\begin{cfuncdesc}{PyObject*}{PySequence_GetItem}{PyObject *o, int i}
Fred Drakee058b4f1998-02-16 06:15:35 +00001450Return the \var{i}th element of \var{o}, or \NULL{} on failure. This
1451is the equivalent of the Python expression \samp{\var{o}[\var{i}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001452\end{cfuncdesc}
1453
1454
1455\begin{cfuncdesc}{PyObject*}{PySequence_GetSlice}{PyObject *o, int i1, int i2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001456Return the slice of sequence object \var{o} between \var{i1} and
1457\var{i2}, or \NULL{} on failure. This is the equivalent of the Python
1458expression \samp{\var{o}[\var{i1}:\var{i2}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001459\end{cfuncdesc}
1460
1461
1462\begin{cfuncdesc}{int}{PySequence_SetItem}{PyObject *o, int i, PyObject *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001463Assign object \var{v} to the \var{i}th element of \var{o}.
1464Returns \code{-1} on failure. This is the equivalent of the Python
1465statement \samp{\var{o}[\var{i}] = \var{v}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001466\end{cfuncdesc}
1467
1468\begin{cfuncdesc}{int}{PySequence_DelItem}{PyObject *o, int i}
Fred Drakee058b4f1998-02-16 06:15:35 +00001469Delete the \var{i}th element of object \var{v}. Returns
1470\code{-1} on failure. This is the equivalent of the Python
1471statement \samp{del \var{o}[\var{i}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001472\end{cfuncdesc}
1473
1474\begin{cfuncdesc}{int}{PySequence_SetSlice}{PyObject *o, int i1, int i2, PyObject *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001475Assign the sequence object \var{v} to the slice in sequence
1476object \var{o} from \var{i1} to \var{i2}. This is the equivalent of
1477the Python statement \samp{\var{o}[\var{i1}:\var{i2}] = \var{v}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001478\end{cfuncdesc}
1479
1480\begin{cfuncdesc}{int}{PySequence_DelSlice}{PyObject *o, int i1, int i2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001481Delete the slice in sequence object \var{o} from \var{i1} to \var{i2}.
1482Returns \code{-1} on failure. This is the equivalent of the Python
1483statement \samp{del \var{o}[\var{i1}:\var{i2}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001484\end{cfuncdesc}
1485
1486\begin{cfuncdesc}{PyObject*}{PySequence_Tuple}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001487Returns the \var{o} as a tuple on success, and \NULL{} on failure.
1488This is equivalent to the Python expression \code{tuple(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001489\end{cfuncdesc}
1490
1491\begin{cfuncdesc}{int}{PySequence_Count}{PyObject *o, PyObject *value}
Fred Drakee058b4f1998-02-16 06:15:35 +00001492Return the number of occurrences of \var{value} in \var{o}, that is,
1493return the number of keys for which \code{\var{o}[\var{key}] ==
1494\var{value}}. On failure, return \code{-1}. This is equivalent to
1495the Python expression \samp{\var{o}.count(\var{value})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001496\end{cfuncdesc}
1497
1498\begin{cfuncdesc}{int}{PySequence_In}{PyObject *o, PyObject *value}
Fred Drakee058b4f1998-02-16 06:15:35 +00001499Determine if \var{o} contains \var{value}. If an item in \var{o} is
1500equal to \var{value}, return \code{1}, otherwise return \code{0}. On
1501error, return \code{-1}. This is equivalent to the Python expression
1502\samp{\var{value} in \var{o}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001503\end{cfuncdesc}
1504
1505\begin{cfuncdesc}{int}{PySequence_Index}{PyObject *o, PyObject *value}
Fred Drakee058b4f1998-02-16 06:15:35 +00001506Return the first index \var{i} for which \code{\var{o}[\var{i}] ==
1507\var{value}}. On error, return \code{-1}. This is equivalent to
1508the Python expression \samp{\var{o}.index(\var{value})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001509\end{cfuncdesc}
1510
Fred Drakef39ed671998-02-26 22:01:23 +00001511
Fred Drakeefd146c1999-02-15 15:30:45 +00001512\section{Mapping Protocol \label{mapping}}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001513
1514\begin{cfuncdesc}{int}{PyMapping_Check}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001515Return \code{1} if the object provides mapping protocol, and \code{0}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001516otherwise.
1517This function always succeeds.
1518\end{cfuncdesc}
1519
1520
1521\begin{cfuncdesc}{int}{PyMapping_Length}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001522Returns the number of keys in object \var{o} on success, and \code{-1}
1523on failure. For objects that do not provide sequence protocol,
1524this is equivalent to the Python expression \samp{len(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001525\end{cfuncdesc}
1526
1527
1528\begin{cfuncdesc}{int}{PyMapping_DelItemString}{PyObject *o, char *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001529Remove the mapping for object \var{key} from the object \var{o}.
1530Return \code{-1} on failure. This is equivalent to
1531the Python statement \samp{del \var{o}[\var{key}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001532\end{cfuncdesc}
1533
1534
1535\begin{cfuncdesc}{int}{PyMapping_DelItem}{PyObject *o, PyObject *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001536Remove the mapping for object \var{key} from the object \var{o}.
1537Return \code{-1} on failure. This is equivalent to
1538the Python statement \samp{del \var{o}[\var{key}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001539\end{cfuncdesc}
1540
1541
1542\begin{cfuncdesc}{int}{PyMapping_HasKeyString}{PyObject *o, char *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001543On success, return \code{1} if the mapping object has the key \var{key}
1544and \code{0} otherwise. This is equivalent to the Python expression
1545\samp{\var{o}.has_key(\var{key})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001546This function always succeeds.
1547\end{cfuncdesc}
1548
1549
1550\begin{cfuncdesc}{int}{PyMapping_HasKey}{PyObject *o, PyObject *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001551Return \code{1} if the mapping object has the key \var{key} and
1552\code{0} otherwise. This is equivalent to the Python expression
1553\samp{\var{o}.has_key(\var{key})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001554This function always succeeds.
1555\end{cfuncdesc}
1556
1557
1558\begin{cfuncdesc}{PyObject*}{PyMapping_Keys}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001559On success, return a list of the keys in object \var{o}. On
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001560failure, return \NULL{}. This is equivalent to the Python
Fred Drakee058b4f1998-02-16 06:15:35 +00001561expression \samp{\var{o}.keys()}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001562\end{cfuncdesc}
1563
1564
1565\begin{cfuncdesc}{PyObject*}{PyMapping_Values}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001566On success, return a list of the values in object \var{o}. On
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001567failure, return \NULL{}. This is equivalent to the Python
Fred Drakee058b4f1998-02-16 06:15:35 +00001568expression \samp{\var{o}.values()}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001569\end{cfuncdesc}
1570
1571
1572\begin{cfuncdesc}{PyObject*}{PyMapping_Items}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001573On success, return a list of the items in object \var{o}, where
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001574each item is a tuple containing a key-value pair. On
1575failure, return \NULL{}. This is equivalent to the Python
Fred Drakee058b4f1998-02-16 06:15:35 +00001576expression \samp{\var{o}.items()}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001577\end{cfuncdesc}
1578
1579\begin{cfuncdesc}{int}{PyMapping_Clear}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001580Make object \var{o} empty. Returns \code{1} on success and \code{0}
1581on failure. This is equivalent to the Python statement
1582\samp{for key in \var{o}.keys(): del \var{o}[key]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001583\end{cfuncdesc}
1584
1585
1586\begin{cfuncdesc}{PyObject*}{PyMapping_GetItemString}{PyObject *o, char *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001587Return element of \var{o} corresponding to the object \var{key} or
1588\NULL{} on failure. This is the equivalent of the Python expression
1589\samp{\var{o}[\var{key}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001590\end{cfuncdesc}
1591
Guido van Rossum0a0f11b1998-10-16 17:43:53 +00001592\begin{cfuncdesc}{int}{PyMapping_SetItemString}{PyObject *o, char *key, PyObject *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001593Map the object \var{key} to the value \var{v} in object \var{o}.
1594Returns \code{-1} on failure. This is the equivalent of the Python
1595statement \samp{\var{o}[\var{key}] = \var{v}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001596\end{cfuncdesc}
1597
1598
1599\section{Constructors}
1600
1601\begin{cfuncdesc}{PyObject*}{PyFile_FromString}{char *file_name, char *mode}
1602On success, returns a new file object that is opened on the
Fred Drakee058b4f1998-02-16 06:15:35 +00001603file given by \var{file_name}, with a file mode given by \var{mode},
1604where \var{mode} has the same semantics as the standard \C{} routine
1605\cfunction{fopen()}. On failure, return \code{-1}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001606\end{cfuncdesc}
1607
1608\begin{cfuncdesc}{PyObject*}{PyFile_FromFile}{FILE *fp, char *file_name, char *mode, int close_on_del}
Fred Drakee058b4f1998-02-16 06:15:35 +00001609Return a new file object for an already opened standard \C{} file
1610pointer, \var{fp}. A file name, \var{file_name}, and open mode,
1611\var{mode}, must be provided as well as a flag, \var{close_on_del},
1612that indicates whether the file is to be closed when the file object
1613is destroyed. On failure, return \code{-1}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001614\end{cfuncdesc}
1615
1616\begin{cfuncdesc}{PyObject*}{PyFloat_FromDouble}{double v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001617Returns a new float object with the value \var{v} on success, and
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001618\NULL{} on failure.
1619\end{cfuncdesc}
1620
1621\begin{cfuncdesc}{PyObject*}{PyInt_FromLong}{long v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001622Returns a new int object with the value \var{v} on success, and
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001623\NULL{} on failure.
1624\end{cfuncdesc}
1625
Fred Drakee058b4f1998-02-16 06:15:35 +00001626\begin{cfuncdesc}{PyObject*}{PyList_New}{int len}
1627Returns a new list of length \var{len} on success, and \NULL{} on
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001628failure.
1629\end{cfuncdesc}
1630
1631\begin{cfuncdesc}{PyObject*}{PyLong_FromLong}{long v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001632Returns a new long object with the value \var{v} on success, and
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001633\NULL{} on failure.
1634\end{cfuncdesc}
1635
1636\begin{cfuncdesc}{PyObject*}{PyLong_FromDouble}{double v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001637Returns a new long object with the value \var{v} on success, and
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001638\NULL{} on failure.
1639\end{cfuncdesc}
1640
1641\begin{cfuncdesc}{PyObject*}{PyDict_New}{}
1642Returns a new empty dictionary on success, and \NULL{} on
1643failure.
1644\end{cfuncdesc}
1645
1646\begin{cfuncdesc}{PyObject*}{PyString_FromString}{char *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001647Returns a new string object with the value \var{v} on success, and
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001648\NULL{} on failure.
1649\end{cfuncdesc}
1650
Fred Drakee058b4f1998-02-16 06:15:35 +00001651\begin{cfuncdesc}{PyObject*}{PyString_FromStringAndSize}{char *v, int len}
1652Returns a new string object with the value \var{v} and length
1653\var{len} on success, and \NULL{} on failure. If \var{v} is \NULL{},
1654the contents of the string are uninitialized.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001655\end{cfuncdesc}
1656
Fred Drakee058b4f1998-02-16 06:15:35 +00001657\begin{cfuncdesc}{PyObject*}{PyTuple_New}{int len}
1658Returns a new tuple of length \var{len} on success, and \NULL{} on
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001659failure.
1660\end{cfuncdesc}
1661
1662
Fred Drakeefd146c1999-02-15 15:30:45 +00001663\chapter{Concrete Objects Layer \label{concrete}}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001664
1665The functions in this chapter are specific to certain Python object
1666types. Passing them an object of the wrong type is not a good idea;
1667if you receive an object from a Python program and you are not sure
1668that it has the right type, you must perform a type check first;
1669e.g. to check that an object is a dictionary, use
Fred Drakee5bf8b21998-02-12 21:22:28 +00001670\cfunction{PyDict_Check()}. The chapter is structured like the
1671``family tree'' of Python object types.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001672
1673
Fred Drakeefd146c1999-02-15 15:30:45 +00001674\section{Fundamental Objects \label{fundamental}}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001675
Fred Drakee5bf8b21998-02-12 21:22:28 +00001676This section describes Python type objects and the singleton object
1677\code{None}.
1678
1679
Fred Drakeefd146c1999-02-15 15:30:45 +00001680\subsection{Type Objects \label{typeObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00001681
1682\begin{ctypedesc}{PyTypeObject}
1683
1684\end{ctypedesc}
1685
1686\begin{cvardesc}{PyObject *}{PyType_Type}
Fred Drakeefd146c1999-02-15 15:30:45 +00001687This is the type object for type objects; it is the same object as
1688\code{types.TypeType} in the Python layer.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001689\end{cvardesc}
1690
1691
Fred Drakeefd146c1999-02-15 15:30:45 +00001692\subsection{The None Object \label{noneObject}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00001693
1694\begin{cvardesc}{PyObject *}{Py_None}
Guido van Rossum44475131998-04-21 15:30:01 +00001695The Python \code{None} object, denoting lack of value. This object has
1696no methods.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001697\end{cvardesc}
1698
1699
Fred Drakeefd146c1999-02-15 15:30:45 +00001700\section{Sequence Objects \label{sequenceObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00001701
1702Generic operations on sequence objects were discussed in the previous
1703chapter; this section deals with the specific kinds of sequence
1704objects that are intrinsic to the Python language.
1705
1706
Fred Drakeefd146c1999-02-15 15:30:45 +00001707\subsection{String Objects \label{stringObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00001708
1709\begin{ctypedesc}{PyStringObject}
Fred Drakef8830d11998-04-23 14:06:01 +00001710This subtype of \ctype{PyObject} represents a Python string object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001711\end{ctypedesc}
1712
1713\begin{cvardesc}{PyTypeObject}{PyString_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00001714This instance of \ctype{PyTypeObject} represents the Python string type.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001715\end{cvardesc}
1716
1717\begin{cfuncdesc}{int}{PyString_Check}{PyObject *o}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001718Returns true if the object \var{o} is a string object.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001719\end{cfuncdesc}
1720
Fred Drakec6fa34e1998-04-02 06:47:24 +00001721\begin{cfuncdesc}{PyObject*}{PyString_FromStringAndSize}{const char *v,
1722 int len}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001723Returns a new string object with the value \var{v} and length
1724\var{len} on success, and \NULL{} on failure. If \var{v} is \NULL{},
1725the contents of the string are uninitialized.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001726\end{cfuncdesc}
1727
1728\begin{cfuncdesc}{PyObject*}{PyString_FromString}{const char *v}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001729Returns a new string object with the value \var{v} on success, and
1730\NULL{} on failure.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001731\end{cfuncdesc}
1732
1733\begin{cfuncdesc}{int}{PyString_Size}{PyObject *string}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001734Returns the length of the string in string object \var{string}.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001735\end{cfuncdesc}
1736
1737\begin{cfuncdesc}{char*}{PyString_AsString}{PyObject *string}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001738Resturns a \NULL{} terminated representation of the contents of \var{string}.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001739\end{cfuncdesc}
1740
1741\begin{cfuncdesc}{void}{PyString_Concat}{PyObject **string,
1742 PyObject *newpart}
Fred Drake66b989c1999-02-15 20:15:39 +00001743Creates a new string object in \var{*string} containing the
1744contents of \var{newpart} appended to \var{string}. The old value of
1745\var{string} have its reference count decremented. If the new string
1746cannot be created, the old reference to \var{string} will still be
1747discarded and the value of \var{*string} will be set to
1748\NULL{}; the appropriate exception will be set.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001749\end{cfuncdesc}
1750
1751\begin{cfuncdesc}{void}{PyString_ConcatAndDel}{PyObject **string,
1752 PyObject *newpart}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001753Creates a new string object in \var{*string} containing the contents
Guido van Rossum44475131998-04-21 15:30:01 +00001754of \var{newpart} appended to \var{string}. This version decrements
1755the reference count of \var{newpart}.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001756\end{cfuncdesc}
1757
1758\begin{cfuncdesc}{int}{_PyString_Resize}{PyObject **string, int newsize}
Guido van Rossum44475131998-04-21 15:30:01 +00001759A way to resize a string object even though it is ``immutable''.
1760Only use this to build up a brand new string object; don't use this if
1761the string may already be known in other parts of the code.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001762\end{cfuncdesc}
1763
1764\begin{cfuncdesc}{PyObject*}{PyString_Format}{PyObject *format,
1765 PyObject *args}
Guido van Rossum44475131998-04-21 15:30:01 +00001766Returns a new string object from \var{format} and \var{args}. Analogous
1767to \code{\var{format} \% \var{args}}. The \var{args} argument must be
1768a tuple.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001769\end{cfuncdesc}
1770
1771\begin{cfuncdesc}{void}{PyString_InternInPlace}{PyObject **string}
Guido van Rossum44475131998-04-21 15:30:01 +00001772Intern the argument \var{*string} in place. The argument must be the
1773address of a pointer variable pointing to a Python string object.
1774If there is an existing interned string that is the same as
1775\var{*string}, it sets \var{*string} to it (decrementing the reference
1776count of the old string object and incrementing the reference count of
1777the interned string object), otherwise it leaves \var{*string} alone
1778and interns it (incrementing its reference count). (Clarification:
1779even though there is a lot of talk about reference counts, think of
Fred Drakef8830d11998-04-23 14:06:01 +00001780this function as reference-count-neutral; you own the object after
1781the call if and only if you owned it before the call.)
Fred Drakec6fa34e1998-04-02 06:47:24 +00001782\end{cfuncdesc}
1783
1784\begin{cfuncdesc}{PyObject*}{PyString_InternFromString}{const char *v}
Fred Drakef8830d11998-04-23 14:06:01 +00001785A combination of \cfunction{PyString_FromString()} and
1786\cfunction{PyString_InternInPlace()}, returning either a new string object
Guido van Rossum44475131998-04-21 15:30:01 +00001787that has been interned, or a new (``owned'') reference to an earlier
1788interned string object with the same value.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001789\end{cfuncdesc}
1790
1791\begin{cfuncdesc}{char*}{PyString_AS_STRING}{PyObject *string}
Fred Drakef8830d11998-04-23 14:06:01 +00001792Macro form of \cfunction{PyString_AsString()} but without error checking.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001793\end{cfuncdesc}
1794
Fred Drakec6fa34e1998-04-02 06:47:24 +00001795\begin{cfuncdesc}{int}{PyString_GET_SIZE}{PyObject *string}
Fred Drakef8830d11998-04-23 14:06:01 +00001796Macro form of \cfunction{PyString_GetSize()} but without error checking.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001797\end{cfuncdesc}
1798
1799
Guido van Rossum44475131998-04-21 15:30:01 +00001800
Fred Drakeefd146c1999-02-15 15:30:45 +00001801\subsection{Tuple Objects \label{tupleObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00001802
1803\begin{ctypedesc}{PyTupleObject}
Fred Drakef8830d11998-04-23 14:06:01 +00001804This subtype of \ctype{PyObject} represents a Python tuple object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001805\end{ctypedesc}
1806
1807\begin{cvardesc}{PyTypeObject}{PyTuple_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00001808This instance of \ctype{PyTypeObject} represents the Python tuple type.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001809\end{cvardesc}
1810
1811\begin{cfuncdesc}{int}{PyTuple_Check}{PyObject *p}
1812Return true if the argument is a tuple object.
1813\end{cfuncdesc}
1814
Fred Drakec6fa34e1998-04-02 06:47:24 +00001815\begin{cfuncdesc}{PyObject*}{PyTuple_New}{int s}
Fred Drakee058b4f1998-02-16 06:15:35 +00001816Return a new tuple object of size \var{s}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001817\end{cfuncdesc}
1818
1819\begin{cfuncdesc}{int}{PyTuple_Size}{PyTupleObject *p}
Fred Drakee058b4f1998-02-16 06:15:35 +00001820Takes a pointer to a tuple object, and returns the size
Fred Drakee5bf8b21998-02-12 21:22:28 +00001821of that tuple.
1822\end{cfuncdesc}
1823
Fred Drakec6fa34e1998-04-02 06:47:24 +00001824\begin{cfuncdesc}{PyObject*}{PyTuple_GetItem}{PyTupleObject *p, int pos}
Fred Drakee058b4f1998-02-16 06:15:35 +00001825Returns the object at position \var{pos} in the tuple pointed
1826to by \var{p}. If \var{pos} is out of bounds, returns \NULL{} and
Fred Drakef8830d11998-04-23 14:06:01 +00001827sets an \exception{IndexError} exception. \strong{Note:} this
1828function returns a ``borrowed'' reference.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001829\end{cfuncdesc}
1830
Fred Drakec6fa34e1998-04-02 06:47:24 +00001831\begin{cfuncdesc}{PyObject*}{PyTuple_GET_ITEM}{PyTupleObject *p, int pos}
Fred Drakee058b4f1998-02-16 06:15:35 +00001832Does the same, but does no checking of its arguments.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001833\end{cfuncdesc}
1834
Fred Drakec6fa34e1998-04-02 06:47:24 +00001835\begin{cfuncdesc}{PyObject*}{PyTuple_GetSlice}{PyTupleObject *p,
Fred Drakee5bf8b21998-02-12 21:22:28 +00001836 int low,
1837 int high}
Fred Drakee058b4f1998-02-16 06:15:35 +00001838Takes a slice of the tuple pointed to by \var{p} from
1839\var{low} to \var{high} and returns it as a new tuple.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001840\end{cfuncdesc}
1841
1842\begin{cfuncdesc}{int}{PyTuple_SetItem}{PyTupleObject *p,
1843 int pos,
1844 PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001845Inserts a reference to object \var{o} at position \var{pos} of
1846the tuple pointed to by \var{p}. It returns \code{0} on success.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001847\end{cfuncdesc}
1848
1849\begin{cfuncdesc}{void}{PyTuple_SET_ITEM}{PyTupleObject *p,
1850 int pos,
1851 PyObject *o}
1852
Fred Drakee058b4f1998-02-16 06:15:35 +00001853Does the same, but does no error checking, and
Fred Drakee5bf8b21998-02-12 21:22:28 +00001854should \emph{only} be used to fill in brand new tuples.
1855\end{cfuncdesc}
1856
Fred Drakec6fa34e1998-04-02 06:47:24 +00001857\begin{cfuncdesc}{int}{_PyTuple_Resize}{PyTupleObject *p,
Fred Drakee5bf8b21998-02-12 21:22:28 +00001858 int new,
1859 int last_is_sticky}
Fred Drakee058b4f1998-02-16 06:15:35 +00001860Can be used to resize a tuple. Because tuples are
Fred Drakee5bf8b21998-02-12 21:22:28 +00001861\emph{supposed} to be immutable, this should only be used if there is only
1862one module referencing the object. Do \emph{not} use this if the tuple may
Fred Drakee058b4f1998-02-16 06:15:35 +00001863already be known to some other part of the code. \var{last_is_sticky} is
1864a flag --- if set, the tuple will grow or shrink at the front, otherwise
Fred Drakee5bf8b21998-02-12 21:22:28 +00001865it will grow or shrink at the end. Think of this as destroying the old
1866tuple and creating a new one, only more efficiently.
1867\end{cfuncdesc}
1868
1869
Fred Drakeefd146c1999-02-15 15:30:45 +00001870\subsection{List Objects \label{listObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00001871
1872\begin{ctypedesc}{PyListObject}
Fred Drakef8830d11998-04-23 14:06:01 +00001873This subtype of \ctype{PyObject} represents a Python list object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001874\end{ctypedesc}
1875
1876\begin{cvardesc}{PyTypeObject}{PyList_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00001877This instance of \ctype{PyTypeObject} represents the Python list type.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001878\end{cvardesc}
1879
1880\begin{cfuncdesc}{int}{PyList_Check}{PyObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00001881Returns true if its argument is a \ctype{PyListObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001882\end{cfuncdesc}
1883
Fred Drakec6fa34e1998-04-02 06:47:24 +00001884\begin{cfuncdesc}{PyObject*}{PyList_New}{int size}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001885Returns a new list of length \var{len} on success, and \NULL{} on
1886failure.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001887\end{cfuncdesc}
1888
Fred Drakec6fa34e1998-04-02 06:47:24 +00001889\begin{cfuncdesc}{int}{PyList_Size}{PyObject *list}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001890Returns the length of the list object in \var{list}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001891\end{cfuncdesc}
1892
Fred Drakec6fa34e1998-04-02 06:47:24 +00001893\begin{cfuncdesc}{PyObject*}{PyList_GetItem}{PyObject *list, int index}
Guido van Rossum44475131998-04-21 15:30:01 +00001894Returns the object at position \var{pos} in the list pointed
1895to by \var{p}. If \var{pos} is out of bounds, returns \NULL{} and
Fred Drakef8830d11998-04-23 14:06:01 +00001896sets an \exception{IndexError} exception. \strong{Note:} this
1897function returns a ``borrowed'' reference.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001898\end{cfuncdesc}
1899
Fred Drakec6fa34e1998-04-02 06:47:24 +00001900\begin{cfuncdesc}{int}{PyList_SetItem}{PyObject *list, int index,
1901 PyObject *item}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001902Sets the item at index \var{index} in list to \var{item}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001903\end{cfuncdesc}
1904
Fred Drakec6fa34e1998-04-02 06:47:24 +00001905\begin{cfuncdesc}{int}{PyList_Insert}{PyObject *list, int index,
Guido van Rossum44475131998-04-21 15:30:01 +00001906 PyObject *item}
1907Inserts the item \var{item} into list \var{list} in front of index
1908\var{index}. Returns 0 if successful; returns -1 and sets an
1909exception if unsuccessful. Analogous to \code{list.insert(index, item)}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001910\end{cfuncdesc}
1911
Fred Drakec6fa34e1998-04-02 06:47:24 +00001912\begin{cfuncdesc}{int}{PyList_Append}{PyObject *list, PyObject *item}
Guido van Rossum44475131998-04-21 15:30:01 +00001913Appends the object \var{item} at the end of list \var{list}. Returns
19140 if successful; returns -1 and sets an exception if unsuccessful.
1915Analogous to \code{list.append(item)}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001916\end{cfuncdesc}
1917
Fred Drakec6fa34e1998-04-02 06:47:24 +00001918\begin{cfuncdesc}{PyObject*}{PyList_GetSlice}{PyObject *list,
1919 int low, int high}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001920Returns a list of the objects in \var{list} containing the objects
Guido van Rossum44475131998-04-21 15:30:01 +00001921\emph{between} \var{low} and \var{high}. Returns NULL and sets an
1922exception if unsuccessful.
1923Analogous to \code{list[low:high]}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001924\end{cfuncdesc}
1925
Fred Drakec6fa34e1998-04-02 06:47:24 +00001926\begin{cfuncdesc}{int}{PyList_SetSlice}{PyObject *list,
1927 int low, int high,
1928 PyObject *itemlist}
Guido van Rossum44475131998-04-21 15:30:01 +00001929Sets the slice of \var{list} between \var{low} and \var{high} to the contents
1930of \var{itemlist}. Analogous to \code{list[low:high]=itemlist}. Returns 0
1931on success, -1 on failure.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001932\end{cfuncdesc}
1933
Fred Drakec6fa34e1998-04-02 06:47:24 +00001934\begin{cfuncdesc}{int}{PyList_Sort}{PyObject *list}
Guido van Rossum44475131998-04-21 15:30:01 +00001935Sorts the items of \var{list} in place. Returns 0 on success, -1 on failure.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001936\end{cfuncdesc}
1937
Fred Drakec6fa34e1998-04-02 06:47:24 +00001938\begin{cfuncdesc}{int}{PyList_Reverse}{PyObject *list}
Guido van Rossum44475131998-04-21 15:30:01 +00001939Reverses the items of \var{list} in place. Returns 0 on success, -1 on failure.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001940\end{cfuncdesc}
1941
Fred Drakec6fa34e1998-04-02 06:47:24 +00001942\begin{cfuncdesc}{PyObject*}{PyList_AsTuple}{PyObject *list}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001943Returns a new tuple object containing the contents of \var{list}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001944\end{cfuncdesc}
1945
Fred Drakec6fa34e1998-04-02 06:47:24 +00001946\begin{cfuncdesc}{PyObject*}{PyList_GET_ITEM}{PyObject *list, int i}
Fred Drakef8830d11998-04-23 14:06:01 +00001947Macro form of \cfunction{PyList_GetItem()} without error checking.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001948\end{cfuncdesc}
1949
Guido van Rossuma937d141998-04-24 18:22:02 +00001950\begin{cfuncdesc}{PyObject*}{PyList_SET_ITEM}{PyObject *list, int i,
1951 PyObject *o}
1952Macro form of \cfunction{PyList_SetItem()} without error checking.
1953\end{cfuncdesc}
1954
Fred Drakee5bf8b21998-02-12 21:22:28 +00001955\begin{cfuncdesc}{int}{PyList_GET_SIZE}{PyObject *list}
Fred Drakef8830d11998-04-23 14:06:01 +00001956Macro form of \cfunction{PyList_GetSize()} without error checking.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001957\end{cfuncdesc}
1958
1959
Fred Drakeefd146c1999-02-15 15:30:45 +00001960\section{Mapping Objects \label{mapObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00001961
Fred Drakeefd146c1999-02-15 15:30:45 +00001962\subsection{Dictionary Objects \label{dictObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00001963
1964\begin{ctypedesc}{PyDictObject}
Fred Drakef8830d11998-04-23 14:06:01 +00001965This subtype of \ctype{PyObject} represents a Python dictionary object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001966\end{ctypedesc}
1967
1968\begin{cvardesc}{PyTypeObject}{PyDict_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00001969This instance of \ctype{PyTypeObject} represents the Python dictionary type.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001970\end{cvardesc}
1971
1972\begin{cfuncdesc}{int}{PyDict_Check}{PyObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00001973Returns true if its argument is a \ctype{PyDictObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001974\end{cfuncdesc}
1975
Fred Drakec6fa34e1998-04-02 06:47:24 +00001976\begin{cfuncdesc}{PyObject*}{PyDict_New}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00001977Returns a new empty dictionary.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001978\end{cfuncdesc}
1979
1980\begin{cfuncdesc}{void}{PyDict_Clear}{PyDictObject *p}
Fred Drakee058b4f1998-02-16 06:15:35 +00001981Empties an existing dictionary of all key/value pairs.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001982\end{cfuncdesc}
1983
1984\begin{cfuncdesc}{int}{PyDict_SetItem}{PyDictObject *p,
1985 PyObject *key,
1986 PyObject *val}
Fred Drakee058b4f1998-02-16 06:15:35 +00001987Inserts \var{value} into the dictionary with a key of \var{key}. Both
1988\var{key} and \var{value} should be PyObjects, and \var{key} should be
1989hashable.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001990\end{cfuncdesc}
1991
1992\begin{cfuncdesc}{int}{PyDict_SetItemString}{PyDictObject *p,
1993 char *key,
1994 PyObject *val}
Fred Drakee058b4f1998-02-16 06:15:35 +00001995Inserts \var{value} into the dictionary using \var{key}
Fred Drakef8830d11998-04-23 14:06:01 +00001996as a key. \var{key} should be a \ctype{char *}. The key object is
Fred Drakee058b4f1998-02-16 06:15:35 +00001997created using \code{PyString_FromString(\var{key})}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001998\end{cfuncdesc}
1999
2000\begin{cfuncdesc}{int}{PyDict_DelItem}{PyDictObject *p, PyObject *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00002001Removes the entry in dictionary \var{p} with key \var{key}.
2002\var{key} is a PyObject.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002003\end{cfuncdesc}
2004
2005\begin{cfuncdesc}{int}{PyDict_DelItemString}{PyDictObject *p, char *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00002006Removes the entry in dictionary \var{p} which has a key
Fred Drakef8830d11998-04-23 14:06:01 +00002007specified by the \ctype{char *}\var{key}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002008\end{cfuncdesc}
2009
Fred Drakec6fa34e1998-04-02 06:47:24 +00002010\begin{cfuncdesc}{PyObject*}{PyDict_GetItem}{PyDictObject *p, PyObject *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00002011Returns the object from dictionary \var{p} which has a key
Guido van Rossum44475131998-04-21 15:30:01 +00002012\var{key}. Returns \NULL{} if the key \var{key} is not present, but
Fred Drakef8830d11998-04-23 14:06:01 +00002013without (!) setting an exception. \strong{Note:} this function
2014returns a ``borrowed'' reference.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002015\end{cfuncdesc}
2016
Fred Drakec6fa34e1998-04-02 06:47:24 +00002017\begin{cfuncdesc}{PyObject*}{PyDict_GetItemString}{PyDictObject *p, char *key}
Fred Drakef8830d11998-04-23 14:06:01 +00002018This is the same as \cfunction{PyDict_GetItem()}, but \var{key} is
2019specified as a \ctype{char *}, rather than a \ctype{PyObject *}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002020\end{cfuncdesc}
2021
Fred Drakec6fa34e1998-04-02 06:47:24 +00002022\begin{cfuncdesc}{PyObject*}{PyDict_Items}{PyDictObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002023Returns a \ctype{PyListObject} containing all the items
Guido van Rossum44475131998-04-21 15:30:01 +00002024from the dictionary, as in the dictinoary method \method{items()} (see
Fred Drakee058b4f1998-02-16 06:15:35 +00002025the \emph{Python Library Reference}).
Fred Drakee5bf8b21998-02-12 21:22:28 +00002026\end{cfuncdesc}
2027
Fred Drakec6fa34e1998-04-02 06:47:24 +00002028\begin{cfuncdesc}{PyObject*}{PyDict_Keys}{PyDictObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002029Returns a \ctype{PyListObject} containing all the keys
Guido van Rossum44475131998-04-21 15:30:01 +00002030from the dictionary, as in the dictionary method \method{keys()} (see the
Fred Drakee058b4f1998-02-16 06:15:35 +00002031\emph{Python Library Reference}).
Fred Drakee5bf8b21998-02-12 21:22:28 +00002032\end{cfuncdesc}
2033
Fred Drakec6fa34e1998-04-02 06:47:24 +00002034\begin{cfuncdesc}{PyObject*}{PyDict_Values}{PyDictObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002035Returns a \ctype{PyListObject} containing all the values
Guido van Rossum44475131998-04-21 15:30:01 +00002036from the dictionary \var{p}, as in the dictionary method
Fred Drakee058b4f1998-02-16 06:15:35 +00002037\method{values()} (see the \emph{Python Library Reference}).
Fred Drakee5bf8b21998-02-12 21:22:28 +00002038\end{cfuncdesc}
2039
2040\begin{cfuncdesc}{int}{PyDict_Size}{PyDictObject *p}
Fred Drakee058b4f1998-02-16 06:15:35 +00002041Returns the number of items in the dictionary.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002042\end{cfuncdesc}
2043
2044\begin{cfuncdesc}{int}{PyDict_Next}{PyDictObject *p,
2045 int ppos,
2046 PyObject **pkey,
2047 PyObject **pvalue}
2048
2049\end{cfuncdesc}
2050
2051
Fred Drakeefd146c1999-02-15 15:30:45 +00002052\section{Numeric Objects \label{numericObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002053
Fred Drakeefd146c1999-02-15 15:30:45 +00002054\subsection{Plain Integer Objects \label{intObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002055
2056\begin{ctypedesc}{PyIntObject}
Fred Drakef8830d11998-04-23 14:06:01 +00002057This subtype of \ctype{PyObject} represents a Python integer object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002058\end{ctypedesc}
2059
2060\begin{cvardesc}{PyTypeObject}{PyInt_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00002061This instance of \ctype{PyTypeObject} represents the Python plain
Fred Drakee5bf8b21998-02-12 21:22:28 +00002062integer type.
2063\end{cvardesc}
2064
2065\begin{cfuncdesc}{int}{PyInt_Check}{PyObject *}
2066
2067\end{cfuncdesc}
2068
Fred Drakec6fa34e1998-04-02 06:47:24 +00002069\begin{cfuncdesc}{PyObject*}{PyInt_FromLong}{long ival}
Fred Drakee058b4f1998-02-16 06:15:35 +00002070Creates a new integer object with a value of \var{ival}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002071
2072The current implementation keeps an array of integer objects for all
Fred Drakee058b4f1998-02-16 06:15:35 +00002073integers between \code{-1} and \code{100}, when you create an int in
2074that range you actually just get back a reference to the existing
2075object. So it should be possible to change the value of \code{1}. I
Fred Drake7e9d3141998-04-03 05:02:28 +00002076suspect the behaviour of Python in this case is undefined. :-)
Fred Drakee5bf8b21998-02-12 21:22:28 +00002077\end{cfuncdesc}
2078
2079\begin{cfuncdesc}{long}{PyInt_AS_LONG}{PyIntObject *io}
Fred Drakee058b4f1998-02-16 06:15:35 +00002080Returns the value of the object \var{io}. No error checking is
2081performed.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002082\end{cfuncdesc}
2083
2084\begin{cfuncdesc}{long}{PyInt_AsLong}{PyObject *io}
Fred Drakef8830d11998-04-23 14:06:01 +00002085Will first attempt to cast the object to a \ctype{PyIntObject}, if
Fred Drakee058b4f1998-02-16 06:15:35 +00002086it is not already one, and then return its value.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002087\end{cfuncdesc}
2088
2089\begin{cfuncdesc}{long}{PyInt_GetMax}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00002090Returns the systems idea of the largest integer it can handle
2091(\constant{LONG_MAX}, as defined in the system header files).
Fred Drakee5bf8b21998-02-12 21:22:28 +00002092\end{cfuncdesc}
2093
2094
Fred Drakeefd146c1999-02-15 15:30:45 +00002095\subsection{Long Integer Objects \label{longObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002096
2097\begin{ctypedesc}{PyLongObject}
Fred Drakef8830d11998-04-23 14:06:01 +00002098This subtype of \ctype{PyObject} represents a Python long integer
Fred Drakee058b4f1998-02-16 06:15:35 +00002099object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002100\end{ctypedesc}
2101
2102\begin{cvardesc}{PyTypeObject}{PyLong_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00002103This instance of \ctype{PyTypeObject} represents the Python long
Fred Drakee058b4f1998-02-16 06:15:35 +00002104integer type.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002105\end{cvardesc}
2106
2107\begin{cfuncdesc}{int}{PyLong_Check}{PyObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002108Returns true if its argument is a \ctype{PyLongObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002109\end{cfuncdesc}
2110
Fred Drakec6fa34e1998-04-02 06:47:24 +00002111\begin{cfuncdesc}{PyObject*}{PyLong_FromLong}{long v}
Fred Drakef8830d11998-04-23 14:06:01 +00002112Returns a new \ctype{PyLongObject} object from \var{v}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002113\end{cfuncdesc}
2114
Fred Drakec6fa34e1998-04-02 06:47:24 +00002115\begin{cfuncdesc}{PyObject*}{PyLong_FromUnsignedLong}{unsigned long v}
Fred Drakef8830d11998-04-23 14:06:01 +00002116Returns a new \ctype{PyLongObject} object from an unsigned \C{} long.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002117\end{cfuncdesc}
2118
Fred Drakec6fa34e1998-04-02 06:47:24 +00002119\begin{cfuncdesc}{PyObject*}{PyLong_FromDouble}{double v}
Fred Drakef8830d11998-04-23 14:06:01 +00002120Returns a new \ctype{PyLongObject} object from the integer part of \var{v}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002121\end{cfuncdesc}
2122
Fred Drakec6fa34e1998-04-02 06:47:24 +00002123\begin{cfuncdesc}{long}{PyLong_AsLong}{PyObject *pylong}
Fred Drakef8830d11998-04-23 14:06:01 +00002124Returns a \C{} \ctype{long} representation of the contents of \var{pylong}.
2125WHAT HAPPENS IF \var{pylong} is greater than \constant{LONG_MAX}?
Fred Drakee5bf8b21998-02-12 21:22:28 +00002126\end{cfuncdesc}
2127
Fred Drakec6fa34e1998-04-02 06:47:24 +00002128\begin{cfuncdesc}{unsigned long}{PyLong_AsUnsignedLong}{PyObject *pylong}
Fred Drakef8830d11998-04-23 14:06:01 +00002129Returns a \C{} \ctype{unsigned long} representation of the contents of
2130\var{pylong}. WHAT HAPPENS IF \var{pylong} is greater than
2131\constant{ULONG_MAX}?
Fred Drakee5bf8b21998-02-12 21:22:28 +00002132\end{cfuncdesc}
2133
Fred Drakec6fa34e1998-04-02 06:47:24 +00002134\begin{cfuncdesc}{double}{PyLong_AsDouble}{PyObject *pylong}
Fred Drakef8830d11998-04-23 14:06:01 +00002135Returns a \C{} \ctype{double} representation of the contents of \var{pylong}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002136\end{cfuncdesc}
2137
Fred Drakec6fa34e1998-04-02 06:47:24 +00002138\begin{cfuncdesc}{PyObject*}{PyLong_FromString}{char *str, char **pend,
2139 int base}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002140\end{cfuncdesc}
2141
2142
Fred Drakeefd146c1999-02-15 15:30:45 +00002143\subsection{Floating Point Objects \label{floatObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002144
2145\begin{ctypedesc}{PyFloatObject}
Fred Drakef8830d11998-04-23 14:06:01 +00002146This subtype of \ctype{PyObject} represents a Python floating point
Fred Drakee058b4f1998-02-16 06:15:35 +00002147object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002148\end{ctypedesc}
2149
2150\begin{cvardesc}{PyTypeObject}{PyFloat_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00002151This instance of \ctype{PyTypeObject} represents the Python floating
Fred Drakee5bf8b21998-02-12 21:22:28 +00002152point type.
2153\end{cvardesc}
2154
2155\begin{cfuncdesc}{int}{PyFloat_Check}{PyObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002156Returns true if its argument is a \ctype{PyFloatObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002157\end{cfuncdesc}
2158
Fred Drakec6fa34e1998-04-02 06:47:24 +00002159\begin{cfuncdesc}{PyObject*}{PyFloat_FromDouble}{double v}
Fred Drakef8830d11998-04-23 14:06:01 +00002160Creates a \ctype{PyFloatObject} object from \var{v}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002161\end{cfuncdesc}
2162
Fred Drakec6fa34e1998-04-02 06:47:24 +00002163\begin{cfuncdesc}{double}{PyFloat_AsDouble}{PyObject *pyfloat}
Fred Drakef8830d11998-04-23 14:06:01 +00002164Returns a \C{} \ctype{double} representation of the contents of \var{pyfloat}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002165\end{cfuncdesc}
2166
Fred Drakec6fa34e1998-04-02 06:47:24 +00002167\begin{cfuncdesc}{double}{PyFloat_AS_DOUBLE}{PyObject *pyfloat}
Fred Drakef8830d11998-04-23 14:06:01 +00002168Returns a \C{} \ctype{double} representation of the contents of
2169\var{pyfloat}, but without error checking.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002170\end{cfuncdesc}
2171
2172
Fred Drakeefd146c1999-02-15 15:30:45 +00002173\subsection{Complex Number Objects \label{complexObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002174
2175\begin{ctypedesc}{Py_complex}
Fred Drake4de05a91998-02-16 14:25:26 +00002176The \C{} structure which corresponds to the value portion of a Python
2177complex number object. Most of the functions for dealing with complex
2178number objects use structures of this type as input or output values,
2179as appropriate. It is defined as:
2180
Fred Drakee058b4f1998-02-16 06:15:35 +00002181\begin{verbatim}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002182typedef struct {
2183 double real;
2184 double imag;
Fred Drake4de05a91998-02-16 14:25:26 +00002185} Py_complex;
Fred Drakee058b4f1998-02-16 06:15:35 +00002186\end{verbatim}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002187\end{ctypedesc}
2188
2189\begin{ctypedesc}{PyComplexObject}
Fred Drakef8830d11998-04-23 14:06:01 +00002190This subtype of \ctype{PyObject} represents a Python complex number object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002191\end{ctypedesc}
2192
2193\begin{cvardesc}{PyTypeObject}{PyComplex_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00002194This instance of \ctype{PyTypeObject} represents the Python complex
Fred Drakee5bf8b21998-02-12 21:22:28 +00002195number type.
2196\end{cvardesc}
2197
2198\begin{cfuncdesc}{int}{PyComplex_Check}{PyObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002199Returns true if its argument is a \ctype{PyComplexObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002200\end{cfuncdesc}
2201
Fred Drakec6fa34e1998-04-02 06:47:24 +00002202\begin{cfuncdesc}{Py_complex}{_Py_c_sum}{Py_complex left, Py_complex right}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002203\end{cfuncdesc}
2204
Fred Drakec6fa34e1998-04-02 06:47:24 +00002205\begin{cfuncdesc}{Py_complex}{_Py_c_diff}{Py_complex left, Py_complex right}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002206\end{cfuncdesc}
2207
Fred Drakec6fa34e1998-04-02 06:47:24 +00002208\begin{cfuncdesc}{Py_complex}{_Py_c_neg}{Py_complex complex}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002209\end{cfuncdesc}
2210
Fred Drakec6fa34e1998-04-02 06:47:24 +00002211\begin{cfuncdesc}{Py_complex}{_Py_c_prod}{Py_complex left, Py_complex right}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002212\end{cfuncdesc}
2213
Fred Drakec6fa34e1998-04-02 06:47:24 +00002214\begin{cfuncdesc}{Py_complex}{_Py_c_quot}{Py_complex dividend,
2215 Py_complex divisor}
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_pow}{Py_complex num, Py_complex exp}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002219\end{cfuncdesc}
2220
Fred Drakec6fa34e1998-04-02 06:47:24 +00002221\begin{cfuncdesc}{PyObject*}{PyComplex_FromCComplex}{Py_complex v}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002222\end{cfuncdesc}
2223
Fred Drakec6fa34e1998-04-02 06:47:24 +00002224\begin{cfuncdesc}{PyObject*}{PyComplex_FromDoubles}{double real, double imag}
Fred Drakef8830d11998-04-23 14:06:01 +00002225Returns a new \ctype{PyComplexObject} object from \var{real} and \var{imag}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002226\end{cfuncdesc}
2227
2228\begin{cfuncdesc}{double}{PyComplex_RealAsDouble}{PyObject *op}
Fred Drakef8830d11998-04-23 14:06:01 +00002229Returns the real part of \var{op} as a \C{} \ctype{double}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002230\end{cfuncdesc}
2231
2232\begin{cfuncdesc}{double}{PyComplex_ImagAsDouble}{PyObject *op}
Fred Drakef8830d11998-04-23 14:06:01 +00002233Returns the imaginary part of \var{op} as a \C{} \ctype{double}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002234\end{cfuncdesc}
2235
2236\begin{cfuncdesc}{Py_complex}{PyComplex_AsCComplex}{PyObject *op}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002237\end{cfuncdesc}
2238
2239
2240
Fred Drakeefd146c1999-02-15 15:30:45 +00002241\section{Other Objects \label{otherObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002242
Fred Drakeefd146c1999-02-15 15:30:45 +00002243\subsection{File Objects \label{fileObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002244
2245\begin{ctypedesc}{PyFileObject}
Fred Drakef8830d11998-04-23 14:06:01 +00002246This subtype of \ctype{PyObject} represents a Python file object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002247\end{ctypedesc}
2248
2249\begin{cvardesc}{PyTypeObject}{PyFile_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00002250This instance of \ctype{PyTypeObject} represents the Python file type.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002251\end{cvardesc}
2252
2253\begin{cfuncdesc}{int}{PyFile_Check}{PyObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002254Returns true if its argument is a \ctype{PyFileObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002255\end{cfuncdesc}
2256
Fred Drakec6fa34e1998-04-02 06:47:24 +00002257\begin{cfuncdesc}{PyObject*}{PyFile_FromString}{char *name, char *mode}
Fred Drakef8830d11998-04-23 14:06:01 +00002258Creates a new \ctype{PyFileObject} pointing to the file
Fred Drakee058b4f1998-02-16 06:15:35 +00002259specified in \var{name} with the mode specified in \var{mode}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002260\end{cfuncdesc}
2261
Fred Drakec6fa34e1998-04-02 06:47:24 +00002262\begin{cfuncdesc}{PyObject*}{PyFile_FromFile}{FILE *fp,
Fred Drakeb92dce31998-02-25 15:40:22 +00002263 char *name, char *mode, int (*close)}
Fred Drakef8830d11998-04-23 14:06:01 +00002264Creates a new \ctype{PyFileObject} from the already-open \var{fp}.
Fred Drakee058b4f1998-02-16 06:15:35 +00002265The function \var{close} will be called when the file should be
2266closed.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002267\end{cfuncdesc}
2268
2269\begin{cfuncdesc}{FILE *}{PyFile_AsFile}{PyFileObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002270Returns the file object associated with \var{p} as a \ctype{FILE *}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002271\end{cfuncdesc}
2272
Fred Drakec6fa34e1998-04-02 06:47:24 +00002273\begin{cfuncdesc}{PyObject*}{PyFile_GetLine}{PyObject *p, int n}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002274undocumented as yet
2275\end{cfuncdesc}
2276
Fred Drakec6fa34e1998-04-02 06:47:24 +00002277\begin{cfuncdesc}{PyObject*}{PyFile_Name}{PyObject *p}
Fred Drakee058b4f1998-02-16 06:15:35 +00002278Returns the name of the file specified by \var{p} as a
Fred Drakef8830d11998-04-23 14:06:01 +00002279\ctype{PyStringObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002280\end{cfuncdesc}
2281
2282\begin{cfuncdesc}{void}{PyFile_SetBufSize}{PyFileObject *p, int n}
Fred Drakee058b4f1998-02-16 06:15:35 +00002283Available on systems with \cfunction{setvbuf()} only. This should
2284only be called immediately after file object creation.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002285\end{cfuncdesc}
2286
2287\begin{cfuncdesc}{int}{PyFile_SoftSpace}{PyFileObject *p, int newflag}
Fred Drakef8830d11998-04-23 14:06:01 +00002288Sets the \member{softspace} attribute of \var{p} to \var{newflag}.
Fred Drakec6fa34e1998-04-02 06:47:24 +00002289Returns the previous value. This function clears any errors, and will
Fred Drakee058b4f1998-02-16 06:15:35 +00002290return \code{0} as the previous value if the attribute either does not
2291exist or if there were errors in retrieving it. There is no way to
2292detect errors from this function, but doing so should not be needed.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002293\end{cfuncdesc}
2294
Fred Drakec6fa34e1998-04-02 06:47:24 +00002295\begin{cfuncdesc}{int}{PyFile_WriteObject}{PyObject *obj, PyFileObject *p,
2296 int flags}
Fred Drakee058b4f1998-02-16 06:15:35 +00002297Writes object \var{obj} to file object \var{p}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002298\end{cfuncdesc}
2299
Fred Drakec6fa34e1998-04-02 06:47:24 +00002300\begin{cfuncdesc}{int}{PyFile_WriteString}{char *s, PyFileObject *p,
2301 int flags}
Fred Drakee058b4f1998-02-16 06:15:35 +00002302Writes string \var{s} to file object \var{p}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002303\end{cfuncdesc}
2304
2305
Fred Drakeefd146c1999-02-15 15:30:45 +00002306\subsection{Module Objects \label{moduleObjects}}
2307
2308\obindex{module}
2309There are only a few functions special to module objects.
2310
2311\begin{cfuncdesc}{PyObject *}{PyModule_New}{char *name}
2312Return a new module object with the \member{__name__} attribute set to
2313\var{name}. Only the module's \member{__doc__} and \member{__name__}
2314attributes are filled in; the caller is responsible for providing a
2315\member{__file__} attribute.
2316\end{cfuncdesc}
2317
2318\begin{cfuncdesc}{PyObject *}{PyModule_GetDict}{PyObject *module}
2319Return the dictionary object that implements \var{module}'s namespace;
2320this object is the same as the \member{__dict__} attribute of the
2321module object. This function never fails.
2322\end{cfuncdesc}
2323
2324\begin{cfuncdesc}{char *}{PyModule_GetName}{PyObject *module}
2325Return \var{module}'s \member{__name__} value. If the module does not
2326provide one, \exception{SystemError} is raised.
2327\end{cfuncdesc}
2328
2329\begin{cfuncdesc}{char *}{PyModule_GetFilename}{PyObject *module}
2330Return the name of the file from which \var{module} was loaded using
2331\var{module}'s \member{__file__} attribute. If this is not defined,
2332raise \exception{SystemError}.
2333\end{cfuncdesc}
2334
2335
2336\subsection{CObjects \label{cObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002337
Guido van Rossum44475131998-04-21 15:30:01 +00002338\begin{ctypedesc}{PyCObject}
Fred Drakef8830d11998-04-23 14:06:01 +00002339This subtype of \ctype{PyObject} represents an opaque value, useful for
Guido van Rossum44475131998-04-21 15:30:01 +00002340\C{} extension modules who need to pass an opaque value (as a
Fred Drakef8830d11998-04-23 14:06:01 +00002341\ctype{void *} pointer) through Python code to other \C{} code. It is
Guido van Rossum44475131998-04-21 15:30:01 +00002342often used to make a C function pointer defined in one module
2343available to other modules, so the regular import mechanism can be
2344used to access C APIs defined in dynamically loaded modules.
2345\end{ctypedesc}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002346
Guido van Rossum44475131998-04-21 15:30:01 +00002347\begin{cfuncdesc}{PyObject *}{PyCObject_FromVoidPtr}{void* cobj,
2348 void (*destr)(void *)}
Fred Drakef8830d11998-04-23 14:06:01 +00002349Creates a \ctype{PyCObject} from the \code{void *} \var{cobj}. The
2350\var{destr} function will be called when the object is reclaimed.
Guido van Rossum44475131998-04-21 15:30:01 +00002351\end{cfuncdesc}
2352
2353\begin{cfuncdesc}{PyObject *}{PyCObject_FromVoidPtrAndDesc}{void* cobj,
2354 void* desc, void (*destr)(void *, void *) }
Fred Drakef8830d11998-04-23 14:06:01 +00002355Creates a \ctype{PyCObject} from the \ctype{void *}\var{cobj}. The
2356\var{destr} function will be called when the object is reclaimed. The
2357\var{desc} argument can be used to pass extra callback data for the
2358destructor function.
Guido van Rossum44475131998-04-21 15:30:01 +00002359\end{cfuncdesc}
2360
2361\begin{cfuncdesc}{void *}{PyCObject_AsVoidPtr}{PyObject* self}
Fred Drakef8830d11998-04-23 14:06:01 +00002362Returns the object \ctype{void *} that the \ctype{PyCObject} \var{self}
Guido van Rossum44475131998-04-21 15:30:01 +00002363was created with.
2364\end{cfuncdesc}
2365
2366\begin{cfuncdesc}{void *}{PyCObject_GetDesc}{PyObject* self}
Fred Drakef8830d11998-04-23 14:06:01 +00002367Returns the description \ctype{void *} that the \ctype{PyCObject}
Guido van Rossum44475131998-04-21 15:30:01 +00002368\var{self} was created with.
2369\end{cfuncdesc}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002370
Fred Drakeefd146c1999-02-15 15:30:45 +00002371\chapter{Initialization, Finalization, and Threads
2372 \label{initialization}}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002373
Guido van Rossum4a944d71997-08-14 20:35:38 +00002374\begin{cfuncdesc}{void}{Py_Initialize}{}
2375Initialize the Python interpreter. In an application embedding
2376Python, this should be called before using any other Python/C API
Fred Drakee058b4f1998-02-16 06:15:35 +00002377functions; with the exception of \cfunction{Py_SetProgramName()},
2378\cfunction{PyEval_InitThreads()}, \cfunction{PyEval_ReleaseLock()},
2379and \cfunction{PyEval_AcquireLock()}. This initializes the table of
2380loaded modules (\code{sys.modules}), and creates the fundamental
Fred Drake4de05a91998-02-16 14:25:26 +00002381modules \module{__builtin__}\refbimodindex{__builtin__},
2382\module{__main__}\refbimodindex{__main__} and
2383\module{sys}\refbimodindex{sys}. It also initializes the module
2384search path (\code{sys.path}).%
2385\indexiii{module}{search}{path}
2386It does not set \code{sys.argv}; use \cfunction{PySys_SetArgv()} for
2387that. This is a no-op when called for a second time (without calling
Fred Drakee058b4f1998-02-16 06:15:35 +00002388\cfunction{Py_Finalize()} first). There is no return value; it is a
2389fatal error if the initialization fails.
Guido van Rossum42cefd01997-10-05 15:27:29 +00002390\end{cfuncdesc}
2391
2392\begin{cfuncdesc}{int}{Py_IsInitialized}{}
Guido van Rossum42cefd01997-10-05 15:27:29 +00002393Return true (nonzero) when the Python interpreter has been
Fred Drakee058b4f1998-02-16 06:15:35 +00002394initialized, false (zero) if not. After \cfunction{Py_Finalize()} is
2395called, this returns false until \cfunction{Py_Initialize()} is called
Guido van Rossum42cefd01997-10-05 15:27:29 +00002396again.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002397\end{cfuncdesc}
2398
2399\begin{cfuncdesc}{void}{Py_Finalize}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00002400Undo all initializations made by \cfunction{Py_Initialize()} and
2401subsequent use of Python/C API functions, and destroy all
2402sub-interpreters (see \cfunction{Py_NewInterpreter()} below) that were
2403created and not yet destroyed since the last call to
2404\cfunction{Py_Initialize()}. Ideally, this frees all memory allocated
2405by the Python interpreter. This is a no-op when called for a second
2406time (without calling \cfunction{Py_Initialize()} again first). There
2407is no return value; errors during finalization are ignored.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002408
2409This function is provided for a number of reasons. An embedding
2410application might want to restart Python without having to restart the
2411application itself. An application that has loaded the Python
2412interpreter from a dynamically loadable library (or DLL) might want to
2413free all memory allocated by Python before unloading the DLL. During a
2414hunt for memory leaks in an application a developer might want to free
2415all memory allocated by Python before exiting from the application.
2416
Fred Drakee058b4f1998-02-16 06:15:35 +00002417\strong{Bugs and caveats:} The destruction of modules and objects in
Guido van Rossum4a944d71997-08-14 20:35:38 +00002418modules is done in random order; this may cause destructors
Fred Drakee058b4f1998-02-16 06:15:35 +00002419(\method{__del__()} methods) to fail when they depend on other objects
Guido van Rossum4a944d71997-08-14 20:35:38 +00002420(even functions) or modules. Dynamically loaded extension modules
2421loaded by Python are not unloaded. Small amounts of memory allocated
2422by the Python interpreter may not be freed (if you find a leak, please
2423report it). Memory tied up in circular references between objects is
2424not freed. Some memory allocated by extension modules may not be
2425freed. Some extension may not work properly if their initialization
2426routine is called more than once; this can happen if an applcation
Fred Drakee058b4f1998-02-16 06:15:35 +00002427calls \cfunction{Py_Initialize()} and \cfunction{Py_Finalize()} more
2428than once.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002429\end{cfuncdesc}
2430
Fred Drakec6fa34e1998-04-02 06:47:24 +00002431\begin{cfuncdesc}{PyThreadState*}{Py_NewInterpreter}{}
Fred Drake4de05a91998-02-16 14:25:26 +00002432Create a new sub-interpreter. This is an (almost) totally separate
2433environment for the execution of Python code. In particular, the new
2434interpreter has separate, independent versions of all imported
2435modules, including the fundamental modules
2436\module{__builtin__}\refbimodindex{__builtin__},
2437\module{__main__}\refbimodindex{__main__} and
2438\module{sys}\refbimodindex{sys}. The table of loaded modules
2439(\code{sys.modules}) and the module search path (\code{sys.path}) are
2440also separate. The new environment has no \code{sys.argv} variable.
2441It has new standard I/O stream file objects \code{sys.stdin},
2442\code{sys.stdout} and \code{sys.stderr} (however these refer to the
Fred Drakef8830d11998-04-23 14:06:01 +00002443same underlying \ctype{FILE} structures in the \C{} library).
Guido van Rossum4a944d71997-08-14 20:35:38 +00002444
2445The return value points to the first thread state created in the new
2446sub-interpreter. This thread state is made the current thread state.
2447Note that no actual thread is created; see the discussion of thread
2448states below. If creation of the new interpreter is unsuccessful,
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002449\NULL{} is returned; no exception is set since the exception state
Guido van Rossum4a944d71997-08-14 20:35:38 +00002450is stored in the current thread state and there may not be a current
2451thread state. (Like all other Python/C API functions, the global
2452interpreter lock must be held before calling this function and is
2453still held when it returns; however, unlike most other Python/C API
2454functions, there needn't be a current thread state on entry.)
2455
2456Extension modules are shared between (sub-)interpreters as follows:
2457the first time a particular extension is imported, it is initialized
2458normally, and a (shallow) copy of its module's dictionary is
2459squirreled away. When the same extension is imported by another
2460(sub-)interpreter, a new module is initialized and filled with the
Fred Drakee058b4f1998-02-16 06:15:35 +00002461contents of this copy; the extension's \code{init} function is not
2462called. Note that this is different from what happens when an
2463extension is imported after the interpreter has been completely
2464re-initialized by calling \cfunction{Py_Finalize()} and
2465\cfunction{Py_Initialize()}; in that case, the extension's \code{init}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002466function \emph{is} called again.
2467
Fred Drakee058b4f1998-02-16 06:15:35 +00002468\strong{Bugs and caveats:} Because sub-interpreters (and the main
Guido van Rossum4a944d71997-08-14 20:35:38 +00002469interpreter) are part of the same process, the insulation between them
Fred Drakee058b4f1998-02-16 06:15:35 +00002470isn't perfect --- for example, using low-level file operations like
Fred Drakef8830d11998-04-23 14:06:01 +00002471\function{os.close()} they can (accidentally or maliciously) affect each
Guido van Rossum4a944d71997-08-14 20:35:38 +00002472other's open files. Because of the way extensions are shared between
2473(sub-)interpreters, some extensions may not work properly; this is
2474especially likely when the extension makes use of (static) global
2475variables, or when the extension manipulates its module's dictionary
2476after its initialization. It is possible to insert objects created in
2477one sub-interpreter into a namespace of another sub-interpreter; this
2478should be done with great care to avoid sharing user-defined
2479functions, methods, instances or classes between sub-interpreters,
2480since import operations executed by such objects may affect the
2481wrong (sub-)interpreter's dictionary of loaded modules. (XXX This is
2482a hard-to-fix bug that will be addressed in a future release.)
2483\end{cfuncdesc}
2484
2485\begin{cfuncdesc}{void}{Py_EndInterpreter}{PyThreadState *tstate}
2486Destroy the (sub-)interpreter represented by the given thread state.
2487The given thread state must be the current thread state. See the
2488discussion of thread states below. When the call returns, the current
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002489thread state is \NULL{}. All thread states associated with this
Guido van Rossum4a944d71997-08-14 20:35:38 +00002490interpreted are destroyed. (The global interpreter lock must be held
2491before calling this function and is still held when it returns.)
Fred Drakee058b4f1998-02-16 06:15:35 +00002492\cfunction{Py_Finalize()} will destroy all sub-interpreters that haven't
Guido van Rossum4a944d71997-08-14 20:35:38 +00002493been explicitly destroyed at that point.
2494\end{cfuncdesc}
2495
2496\begin{cfuncdesc}{void}{Py_SetProgramName}{char *name}
Fred Drakee058b4f1998-02-16 06:15:35 +00002497This function should be called before \cfunction{Py_Initialize()} is called
Guido van Rossum4a944d71997-08-14 20:35:38 +00002498for the first time, if it is called at all. It tells the interpreter
Fred Drakee058b4f1998-02-16 06:15:35 +00002499the value of the \code{argv[0]} argument to the \cfunction{main()} function
2500of the program. This is used by \cfunction{Py_GetPath()} and some other
Guido van Rossum4a944d71997-08-14 20:35:38 +00002501functions below to find the Python run-time libraries relative to the
2502interpreter executable. The default value is \code{"python"}. The
2503argument should point to a zero-terminated character string in static
2504storage whose contents will not change for the duration of the
2505program's execution. No code in the Python interpreter will change
2506the contents of this storage.
2507\end{cfuncdesc}
2508
Fred Drakec6fa34e1998-04-02 06:47:24 +00002509\begin{cfuncdesc}{char*}{Py_GetProgramName}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00002510Return the program name set with \cfunction{Py_SetProgramName()}, or the
Guido van Rossum4a944d71997-08-14 20:35:38 +00002511default. The returned string points into static storage; the caller
2512should not modify its value.
2513\end{cfuncdesc}
2514
Fred Drakec6fa34e1998-04-02 06:47:24 +00002515\begin{cfuncdesc}{char*}{Py_GetPrefix}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00002516Return the \emph{prefix} for installed platform-independent files. This
Guido van Rossum4a944d71997-08-14 20:35:38 +00002517is derived through a number of complicated rules from the program name
Fred Drakee058b4f1998-02-16 06:15:35 +00002518set with \cfunction{Py_SetProgramName()} and some environment variables;
Guido van Rossum4a944d71997-08-14 20:35:38 +00002519for example, if the program name is \code{"/usr/local/bin/python"},
2520the prefix is \code{"/usr/local"}. The returned string points into
2521static storage; the caller should not modify its value. This
Fred Drakec94d9341998-04-12 02:39:13 +00002522corresponds to the \makevar{prefix} variable in the top-level
2523\file{Makefile} and the \code{-}\code{-prefix} argument to the
Fred Drakee058b4f1998-02-16 06:15:35 +00002524\program{configure} script at build time. The value is available to
Fred Drakeb0a78731998-01-13 18:51:10 +00002525Python code as \code{sys.prefix}. It is only useful on \UNIX{}. See
Guido van Rossum4a944d71997-08-14 20:35:38 +00002526also the next function.
2527\end{cfuncdesc}
2528
Fred Drakec6fa34e1998-04-02 06:47:24 +00002529\begin{cfuncdesc}{char*}{Py_GetExecPrefix}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00002530Return the \emph{exec-prefix} for installed platform-\emph{de}pendent
Guido van Rossum4a944d71997-08-14 20:35:38 +00002531files. This is derived through a number of complicated rules from the
Fred Drakee058b4f1998-02-16 06:15:35 +00002532program name set with \cfunction{Py_SetProgramName()} and some environment
Guido van Rossum4a944d71997-08-14 20:35:38 +00002533variables; for example, if the program name is
2534\code{"/usr/local/bin/python"}, the exec-prefix is
2535\code{"/usr/local"}. The returned string points into static storage;
2536the caller should not modify its value. This corresponds to the
Fred Drakec94d9341998-04-12 02:39:13 +00002537\makevar{exec_prefix} variable in the top-level \file{Makefile} and the
2538\code{-}\code{-exec_prefix} argument to the \program{configure} script
2539at build time. The value is available to Python code as
Fred Drakeb0a78731998-01-13 18:51:10 +00002540\code{sys.exec_prefix}. It is only useful on \UNIX{}.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002541
2542Background: The exec-prefix differs from the prefix when platform
2543dependent files (such as executables and shared libraries) are
2544installed in a different directory tree. In a typical installation,
2545platform dependent files may be installed in the
2546\code{"/usr/local/plat"} subtree while platform independent may be
2547installed in \code{"/usr/local"}.
2548
2549Generally speaking, a platform is a combination of hardware and
2550software families, e.g. Sparc machines running the Solaris 2.x
2551operating system are considered the same platform, but Intel machines
2552running Solaris 2.x are another platform, and Intel machines running
2553Linux are yet another platform. Different major revisions of the same
Fred Drakeb0a78731998-01-13 18:51:10 +00002554operating system generally also form different platforms. Non-\UNIX{}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002555operating systems are a different story; the installation strategies
2556on those systems are so different that the prefix and exec-prefix are
2557meaningless, and set to the empty string. Note that compiled Python
2558bytecode files are platform independent (but not independent from the
2559Python version by which they were compiled!).
2560
Fred Drakee058b4f1998-02-16 06:15:35 +00002561System administrators will know how to configure the \program{mount} or
2562\program{automount} programs to share \code{"/usr/local"} between platforms
Guido van Rossum4a944d71997-08-14 20:35:38 +00002563while having \code{"/usr/local/plat"} be a different filesystem for each
2564platform.
2565\end{cfuncdesc}
2566
Fred Drakec6fa34e1998-04-02 06:47:24 +00002567\begin{cfuncdesc}{char*}{Py_GetProgramFullPath}{}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002568Return the full program name of the Python executable; this is
2569computed as a side-effect of deriving the default module search path
Fred Drakee058b4f1998-02-16 06:15:35 +00002570from the program name (set by \cfunction{Py_SetProgramName()} above). The
Guido van Rossum4a944d71997-08-14 20:35:38 +00002571returned string points into static storage; the caller should not
2572modify its value. The value is available to Python code as
Guido van Rossum42cefd01997-10-05 15:27:29 +00002573\code{sys.executable}.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002574\end{cfuncdesc}
2575
Fred Drakec6fa34e1998-04-02 06:47:24 +00002576\begin{cfuncdesc}{char*}{Py_GetPath}{}
Fred Drake4de05a91998-02-16 14:25:26 +00002577\indexiii{module}{search}{path}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002578Return the default module search path; this is computed from the
Fred Drakee058b4f1998-02-16 06:15:35 +00002579program name (set by \cfunction{Py_SetProgramName()} above) and some
Guido van Rossum4a944d71997-08-14 20:35:38 +00002580environment variables. The returned string consists of a series of
2581directory names separated by a platform dependent delimiter character.
Fred Drakef8830d11998-04-23 14:06:01 +00002582The delimiter character is \character{:} on \UNIX{}, \character{;} on
2583DOS/Windows, and \character{\\n} (the \ASCII{} newline character) on
Fred Drakee5bc4971998-02-12 23:36:49 +00002584Macintosh. The returned string points into static storage; the caller
Guido van Rossum4a944d71997-08-14 20:35:38 +00002585should not modify its value. The value is available to Python code
2586as the list \code{sys.path}, which may be modified to change the
2587future search path for loaded modules.
2588
2589% XXX should give the exact rules
2590\end{cfuncdesc}
2591
Fred Drakec6fa34e1998-04-02 06:47:24 +00002592\begin{cfuncdesc}{const char*}{Py_GetVersion}{}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002593Return the version of this Python interpreter. This is a string that
2594looks something like
2595
Guido van Rossum09270b51997-08-15 18:57:32 +00002596\begin{verbatim}
Fred Drakee058b4f1998-02-16 06:15:35 +00002597"1.5 (#67, Dec 31 1997, 22:34:28) [GCC 2.7.2.2]"
Guido van Rossum09270b51997-08-15 18:57:32 +00002598\end{verbatim}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002599
2600The first word (up to the first space character) is the current Python
2601version; the first three characters are the major and minor version
2602separated by a period. The returned string points into static storage;
2603the caller should not modify its value. The value is available to
2604Python code as the list \code{sys.version}.
2605\end{cfuncdesc}
2606
Fred Drakec6fa34e1998-04-02 06:47:24 +00002607\begin{cfuncdesc}{const char*}{Py_GetPlatform}{}
Fred Drakeb0a78731998-01-13 18:51:10 +00002608Return the platform identifier for the current platform. On \UNIX{},
Guido van Rossum4a944d71997-08-14 20:35:38 +00002609this is formed from the ``official'' name of the operating system,
2610converted to lower case, followed by the major revision number; e.g.,
2611for Solaris 2.x, which is also known as SunOS 5.x, the value is
2612\code{"sunos5"}. On Macintosh, it is \code{"mac"}. On Windows, it
2613is \code{"win"}. The returned string points into static storage;
2614the caller should not modify its value. The value is available to
2615Python code as \code{sys.platform}.
2616\end{cfuncdesc}
2617
Fred Drakec6fa34e1998-04-02 06:47:24 +00002618\begin{cfuncdesc}{const char*}{Py_GetCopyright}{}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002619Return the official copyright string for the current Python version,
2620for example
2621
2622\code{"Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam"}
2623
2624The returned string points into static storage; the caller should not
2625modify its value. The value is available to Python code as the list
2626\code{sys.copyright}.
2627\end{cfuncdesc}
2628
Fred Drakec6fa34e1998-04-02 06:47:24 +00002629\begin{cfuncdesc}{const char*}{Py_GetCompiler}{}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002630Return an indication of the compiler used to build the current Python
Fred Drakee058b4f1998-02-16 06:15:35 +00002631version, in square brackets, for example:
Guido van Rossum4a944d71997-08-14 20:35:38 +00002632
Fred Drakee058b4f1998-02-16 06:15:35 +00002633\begin{verbatim}
2634"[GCC 2.7.2.2]"
2635\end{verbatim}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002636
2637The returned string points into static storage; the caller should not
2638modify its value. The value is available to Python code as part of
2639the variable \code{sys.version}.
2640\end{cfuncdesc}
2641
Fred Drakec6fa34e1998-04-02 06:47:24 +00002642\begin{cfuncdesc}{const char*}{Py_GetBuildInfo}{}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002643Return information about the sequence number and build date and time
2644of the current Python interpreter instance, for example
2645
Guido van Rossum09270b51997-08-15 18:57:32 +00002646\begin{verbatim}
2647"#67, Aug 1 1997, 22:34:28"
2648\end{verbatim}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002649
2650The returned string points into static storage; the caller should not
2651modify its value. The value is available to Python code as part of
2652the variable \code{sys.version}.
2653\end{cfuncdesc}
2654
2655\begin{cfuncdesc}{int}{PySys_SetArgv}{int argc, char **argv}
2656% XXX
2657\end{cfuncdesc}
2658
2659% XXX Other PySys thingies (doesn't really belong in this chapter)
2660
Fred Drakeefd146c1999-02-15 15:30:45 +00002661\section{Thread State and the Global Interpreter Lock
2662 \label{threads}}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002663
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002664The Python interpreter is not fully thread safe. In order to support
2665multi-threaded Python programs, there's a global lock that must be
2666held by the current thread before it can safely access Python objects.
2667Without the lock, even the simplest operations could cause problems in
Fred Drake7baf3d41998-02-20 00:45:52 +00002668a multi-threaded program: for example, when two threads simultaneously
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002669increment the reference count of the same object, the reference count
2670could end up being incremented only once instead of twice.
2671
2672Therefore, the rule exists that only the thread that has acquired the
2673global interpreter lock may operate on Python objects or call Python/C
2674API functions. In order to support multi-threaded Python programs,
Fred Drakee058b4f1998-02-16 06:15:35 +00002675the interpreter regularly release and reacquires the lock --- by
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002676default, every ten bytecode instructions (this can be changed with
Fred Drakee058b4f1998-02-16 06:15:35 +00002677\function{sys.setcheckinterval()}). The lock is also released and
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002678reacquired around potentially blocking I/O operations like reading or
2679writing a file, so that other threads can run while the thread that
2680requests the I/O is waiting for the I/O operation to complete.
2681
2682The Python interpreter needs to keep some bookkeeping information
Fred Drakee058b4f1998-02-16 06:15:35 +00002683separate per thread --- for this it uses a data structure called
Fred Drakef8830d11998-04-23 14:06:01 +00002684\ctype{PyThreadState}. This is new in Python 1.5; in earlier versions,
Fred Drakee058b4f1998-02-16 06:15:35 +00002685such state was stored in global variables, and switching threads could
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002686cause problems. In particular, exception handling is now thread safe,
Fred Drakee058b4f1998-02-16 06:15:35 +00002687when the application uses \function{sys.exc_info()} to access the
2688exception last raised in the current thread.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002689
2690There's one global variable left, however: the pointer to the current
Fred Drakef8830d11998-04-23 14:06:01 +00002691\ctype{PyThreadState} structure. While most thread packages have a way
Fred Drake9d20ac31998-02-16 15:27:08 +00002692to store ``per-thread global data,'' Python's internal platform
Fred Drakee058b4f1998-02-16 06:15:35 +00002693independent thread abstraction doesn't support this yet. Therefore,
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002694the current thread state must be manipulated explicitly.
2695
2696This is easy enough in most cases. Most code manipulating the global
2697interpreter lock has the following simple structure:
2698
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002699\begin{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002700Save the thread state in a local variable.
2701Release the interpreter lock.
2702...Do some blocking I/O operation...
2703Reacquire the interpreter lock.
2704Restore the thread state from the local variable.
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002705\end{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002706
2707This is so common that a pair of macros exists to simplify it:
2708
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002709\begin{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002710Py_BEGIN_ALLOW_THREADS
2711...Do some blocking I/O operation...
2712Py_END_ALLOW_THREADS
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002713\end{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002714
Fred Drakee058b4f1998-02-16 06:15:35 +00002715The \code{Py_BEGIN_ALLOW_THREADS} macro opens a new block and declares
2716a hidden local variable; the \code{Py_END_ALLOW_THREADS} macro closes
2717the block. Another advantage of using these two macros is that when
2718Python is compiled without thread support, they are defined empty,
2719thus saving the thread state and lock manipulations.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002720
2721When thread support is enabled, the block above expands to the
2722following code:
2723
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002724\begin{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002725{
2726 PyThreadState *_save;
2727 _save = PyEval_SaveThread();
2728 ...Do some blocking I/O operation...
2729 PyEval_RestoreThread(_save);
2730}
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002731\end{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002732
2733Using even lower level primitives, we can get roughly the same effect
2734as follows:
2735
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002736\begin{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002737{
2738 PyThreadState *_save;
2739 _save = PyThreadState_Swap(NULL);
2740 PyEval_ReleaseLock();
2741 ...Do some blocking I/O operation...
2742 PyEval_AcquireLock();
2743 PyThreadState_Swap(_save);
2744}
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002745\end{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002746
2747There are some subtle differences; in particular,
Fred Drakee058b4f1998-02-16 06:15:35 +00002748\cfunction{PyEval_RestoreThread()} saves and restores the value of the
Fred Drakef8830d11998-04-23 14:06:01 +00002749global variable \cdata{errno}, since the lock manipulation does not
2750guarantee that \cdata{errno} is left alone. Also, when thread support
Fred Drakee058b4f1998-02-16 06:15:35 +00002751is disabled, \cfunction{PyEval_SaveThread()} and
2752\cfunction{PyEval_RestoreThread()} don't manipulate the lock; in this
2753case, \cfunction{PyEval_ReleaseLock()} and
2754\cfunction{PyEval_AcquireLock()} are not available. This is done so
2755that dynamically loaded extensions compiled with thread support
2756enabled can be loaded by an interpreter that was compiled with
2757disabled thread support.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002758
2759The global interpreter lock is used to protect the pointer to the
2760current thread state. When releasing the lock and saving the thread
2761state, the current thread state pointer must be retrieved before the
2762lock is released (since another thread could immediately acquire the
2763lock and store its own thread state in the global variable).
2764Reversely, when acquiring the lock and restoring the thread state, the
2765lock must be acquired before storing the thread state pointer.
2766
2767Why am I going on with so much detail about this? Because when
Fred Drakeb0a78731998-01-13 18:51:10 +00002768threads are created from \C{}, they don't have the global interpreter
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002769lock, nor is there a thread state data structure for them. Such
2770threads must bootstrap themselves into existence, by first creating a
2771thread state data structure, then acquiring the lock, and finally
2772storing their thread state pointer, before they can start using the
2773Python/C API. When they are done, they should reset the thread state
2774pointer, release the lock, and finally free their thread state data
2775structure.
2776
2777When creating a thread data structure, you need to provide an
2778interpreter state data structure. The interpreter state data
2779structure hold global data that is shared by all threads in an
2780interpreter, for example the module administration
2781(\code{sys.modules}). Depending on your needs, you can either create
2782a new interpreter state data structure, or share the interpreter state
2783data structure used by the Python main thread (to access the latter,
Fred Drakef8830d11998-04-23 14:06:01 +00002784you must obtain the thread state and access its \member{interp} member;
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002785this must be done by a thread that is created by Python or by the main
2786thread after Python is initialized).
2787
2788XXX More?
2789
2790\begin{ctypedesc}{PyInterpreterState}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002791This data structure represents the state shared by a number of
2792cooperating threads. Threads belonging to the same interpreter
2793share their module administration and a few other internal items.
2794There are no public members in this structure.
2795
2796Threads belonging to different interpreters initially share nothing,
2797except process state like available memory, open file descriptors and
2798such. The global interpreter lock is also shared by all threads,
2799regardless of to which interpreter they belong.
2800\end{ctypedesc}
2801
2802\begin{ctypedesc}{PyThreadState}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002803This data structure represents the state of a single thread. The only
Fred Drakef8830d11998-04-23 14:06:01 +00002804public data member is \ctype{PyInterpreterState *}\member{interp},
2805which points to this thread's interpreter state.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002806\end{ctypedesc}
2807
2808\begin{cfuncdesc}{void}{PyEval_InitThreads}{}
2809Initialize and acquire the global interpreter lock. It should be
2810called in the main thread before creating a second thread or engaging
Fred Drakee058b4f1998-02-16 06:15:35 +00002811in any other thread operations such as
2812\cfunction{PyEval_ReleaseLock()} or
2813\code{PyEval_ReleaseThread(\var{tstate})}. It is not needed before
2814calling \cfunction{PyEval_SaveThread()} or
2815\cfunction{PyEval_RestoreThread()}.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002816
2817This is a no-op when called for a second time. It is safe to call
Fred Drakee058b4f1998-02-16 06:15:35 +00002818this function before calling \cfunction{Py_Initialize()}.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002819
2820When only the main thread exists, no lock operations are needed. This
2821is a common situation (most Python programs do not use threads), and
2822the lock operations slow the interpreter down a bit. Therefore, the
2823lock is not created initially. This situation is equivalent to having
2824acquired the lock: when there is only a single thread, all object
2825accesses are safe. Therefore, when this function initializes the
Fred Drake4de05a91998-02-16 14:25:26 +00002826lock, it also acquires it. Before the Python
2827\module{thread}\refbimodindex{thread} module creates a new thread,
2828knowing that either it has the lock or the lock hasn't been created
2829yet, it calls \cfunction{PyEval_InitThreads()}. When this call
2830returns, it is guaranteed that the lock has been created and that it
2831has acquired it.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002832
2833It is \strong{not} safe to call this function when it is unknown which
2834thread (if any) currently has the global interpreter lock.
2835
2836This function is not available when thread support is disabled at
2837compile time.
2838\end{cfuncdesc}
2839
Guido van Rossum4a944d71997-08-14 20:35:38 +00002840\begin{cfuncdesc}{void}{PyEval_AcquireLock}{}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002841Acquire the global interpreter lock. The lock must have been created
2842earlier. If this thread already has the lock, a deadlock ensues.
2843This function is not available when thread support is disabled at
2844compile time.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002845\end{cfuncdesc}
2846
2847\begin{cfuncdesc}{void}{PyEval_ReleaseLock}{}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002848Release the global interpreter lock. The lock must have been created
2849earlier. This function is not available when thread support is
Fred Drakee058b4f1998-02-16 06:15:35 +00002850disabled at compile time.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002851\end{cfuncdesc}
2852
2853\begin{cfuncdesc}{void}{PyEval_AcquireThread}{PyThreadState *tstate}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002854Acquire the global interpreter lock and then set the current thread
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002855state to \var{tstate}, which should not be \NULL{}. The lock must
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002856have been created earlier. If this thread already has the lock,
2857deadlock ensues. This function is not available when thread support
Fred Drakee058b4f1998-02-16 06:15:35 +00002858is disabled at compile time.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002859\end{cfuncdesc}
2860
2861\begin{cfuncdesc}{void}{PyEval_ReleaseThread}{PyThreadState *tstate}
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002862Reset the current thread state to \NULL{} and release the global
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002863interpreter lock. The lock must have been created earlier and must be
2864held by the current thread. The \var{tstate} argument, which must not
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002865be \NULL{}, is only used to check that it represents the current
Fred Drakee058b4f1998-02-16 06:15:35 +00002866thread state --- if it isn't, a fatal error is reported. This
2867function is not available when thread support is disabled at compile
2868time.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002869\end{cfuncdesc}
2870
Fred Drakec6fa34e1998-04-02 06:47:24 +00002871\begin{cfuncdesc}{PyThreadState*}{PyEval_SaveThread}{}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002872Release the interpreter lock (if it has been created and thread
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002873support is enabled) and reset the thread state to \NULL{},
2874returning the previous thread state (which is not \NULL{}). If
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002875the lock has been created, the current thread must have acquired it.
2876(This function is available even when thread support is disabled at
2877compile time.)
Guido van Rossum4a944d71997-08-14 20:35:38 +00002878\end{cfuncdesc}
2879
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002880\begin{cfuncdesc}{void}{PyEval_RestoreThread}{PyThreadState *tstate}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002881Acquire the interpreter lock (if it has been created and thread
2882support is enabled) and set the thread state to \var{tstate}, which
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002883must not be \NULL{}. If the lock has been created, the current
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002884thread must not have acquired it, otherwise deadlock ensues. (This
2885function is available even when thread support is disabled at compile
2886time.)
Guido van Rossum4a944d71997-08-14 20:35:38 +00002887\end{cfuncdesc}
2888
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002889% XXX These aren't really C types, but the ctypedesc macro is the simplest!
2890\begin{ctypedesc}{Py_BEGIN_ALLOW_THREADS}
2891This macro expands to
Fred Drakee058b4f1998-02-16 06:15:35 +00002892\samp{\{ PyThreadState *_save; _save = PyEval_SaveThread();}.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002893Note that it contains an opening brace; it must be matched with a
2894following \code{Py_END_ALLOW_THREADS} macro. See above for further
2895discussion of this macro. It is a no-op when thread support is
2896disabled at compile time.
2897\end{ctypedesc}
2898
2899\begin{ctypedesc}{Py_END_ALLOW_THREADS}
2900This macro expands to
Fred Drakee058b4f1998-02-16 06:15:35 +00002901\samp{PyEval_RestoreThread(_save); \}}.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002902Note that it contains a closing brace; it must be matched with an
2903earlier \code{Py_BEGIN_ALLOW_THREADS} macro. See above for further
2904discussion of this macro. It is a no-op when thread support is
2905disabled at compile time.
2906\end{ctypedesc}
2907
2908\begin{ctypedesc}{Py_BEGIN_BLOCK_THREADS}
Fred Drakee058b4f1998-02-16 06:15:35 +00002909This macro expands to \samp{PyEval_RestoreThread(_save);} i.e. it
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002910is equivalent to \code{Py_END_ALLOW_THREADS} without the closing
2911brace. It is a no-op when thread support is disabled at compile
2912time.
2913\end{ctypedesc}
2914
2915\begin{ctypedesc}{Py_BEGIN_UNBLOCK_THREADS}
Fred Drakee058b4f1998-02-16 06:15:35 +00002916This macro expands to \samp{_save = PyEval_SaveThread();} i.e. it is
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002917equivalent to \code{Py_BEGIN_ALLOW_THREADS} without the opening brace
2918and variable declaration. It is a no-op when thread support is
2919disabled at compile time.
2920\end{ctypedesc}
2921
2922All of the following functions are only available when thread support
2923is enabled at compile time, and must be called only when the
Fred Drake9d20ac31998-02-16 15:27:08 +00002924interpreter lock has been created.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002925
Fred Drakec6fa34e1998-04-02 06:47:24 +00002926\begin{cfuncdesc}{PyInterpreterState*}{PyInterpreterState_New}{}
Guido van Rossumed9dcc11998-08-07 18:28:03 +00002927Create a new interpreter state object. The interpreter lock need not
2928be held, but may be held if it is necessary to serialize calls to this
2929function.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002930\end{cfuncdesc}
2931
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002932\begin{cfuncdesc}{void}{PyInterpreterState_Clear}{PyInterpreterState *interp}
2933Reset all information in an interpreter state object. The interpreter
2934lock must be held.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002935\end{cfuncdesc}
2936
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002937\begin{cfuncdesc}{void}{PyInterpreterState_Delete}{PyInterpreterState *interp}
2938Destroy an interpreter state object. The interpreter lock need not be
2939held. The interpreter state must have been reset with a previous
Fred Drakee058b4f1998-02-16 06:15:35 +00002940call to \cfunction{PyInterpreterState_Clear()}.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002941\end{cfuncdesc}
2942
Fred Drakec6fa34e1998-04-02 06:47:24 +00002943\begin{cfuncdesc}{PyThreadState*}{PyThreadState_New}{PyInterpreterState *interp}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002944Create a new thread state object belonging to the given interpreter
Guido van Rossumed9dcc11998-08-07 18:28:03 +00002945object. The interpreter lock need not be held, but may be held if it
2946is necessary to serialize calls to this function.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002947\end{cfuncdesc}
2948
2949\begin{cfuncdesc}{void}{PyThreadState_Clear}{PyThreadState *tstate}
2950Reset all information in a thread state object. The interpreter lock
2951must be held.
2952\end{cfuncdesc}
2953
2954\begin{cfuncdesc}{void}{PyThreadState_Delete}{PyThreadState *tstate}
2955Destroy a thread state object. The interpreter lock need not be
2956held. The thread state must have been reset with a previous
Fred Drakee058b4f1998-02-16 06:15:35 +00002957call to \cfunction{PyThreadState_Clear()}.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002958\end{cfuncdesc}
2959
Fred Drakec6fa34e1998-04-02 06:47:24 +00002960\begin{cfuncdesc}{PyThreadState*}{PyThreadState_Get}{}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002961Return the current thread state. The interpreter lock must be held.
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002962When the current thread state is \NULL{}, this issues a fatal
Guido van Rossum5b8a5231997-12-30 04:38:44 +00002963error (so that the caller needn't check for \NULL{}).
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002964\end{cfuncdesc}
2965
Fred Drakec6fa34e1998-04-02 06:47:24 +00002966\begin{cfuncdesc}{PyThreadState*}{PyThreadState_Swap}{PyThreadState *tstate}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002967Swap the current thread state with the thread state given by the
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002968argument \var{tstate}, which may be \NULL{}. The interpreter lock
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002969must be held.
2970\end{cfuncdesc}
2971
2972
Fred Drakeefd146c1999-02-15 15:30:45 +00002973\chapter{Defining New Object Types \label{newTypes}}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002974
Fred Drakec6fa34e1998-04-02 06:47:24 +00002975\begin{cfuncdesc}{PyObject*}{_PyObject_New}{PyTypeObject *type}
Fred Drakee058b4f1998-02-16 06:15:35 +00002976\end{cfuncdesc}
2977
Fred Drakec6fa34e1998-04-02 06:47:24 +00002978\begin{cfuncdesc}{PyObject*}{_PyObject_NewVar}{PyTypeObject *type, int size}
Fred Drakee058b4f1998-02-16 06:15:35 +00002979\end{cfuncdesc}
2980
2981\begin{cfuncdesc}{TYPE}{_PyObject_NEW}{TYPE, PyTypeObject *}
2982\end{cfuncdesc}
2983
2984\begin{cfuncdesc}{TYPE}{_PyObject_NEW_VAR}{TYPE, PyTypeObject *, int size}
2985\end{cfuncdesc}
2986
Guido van Rossum3c4378b1998-04-14 20:21:10 +00002987Py_InitModule (!!!)
2988
2989PyArg_ParseTupleAndKeywords, PyArg_ParseTuple, PyArg_Parse
2990
2991Py_BuildValue
Guido van Rossumae110af1997-05-22 20:11:52 +00002992
2993PyObject, PyVarObject
2994
2995PyObject_HEAD, PyObject_HEAD_INIT, PyObject_VAR_HEAD
2996
2997Typedefs:
2998unaryfunc, binaryfunc, ternaryfunc, inquiry, coercion, intargfunc,
2999intintargfunc, intobjargproc, intintobjargproc, objobjargproc,
3000getreadbufferproc, getwritebufferproc, getsegcountproc,
3001destructor, printfunc, getattrfunc, getattrofunc, setattrfunc,
3002setattrofunc, cmpfunc, reprfunc, hashfunc
3003
3004PyNumberMethods
3005
3006PySequenceMethods
3007
3008PyMappingMethods
3009
3010PyBufferProcs
3011
3012PyTypeObject
3013
3014DL_IMPORT
3015
3016PyType_Type
3017
3018Py*_Check
3019
3020Py_None, _Py_NoneStruct
3021
Guido van Rossumae110af1997-05-22 20:11:52 +00003022
Fred Drakeefd146c1999-02-15 15:30:45 +00003023\chapter{Debugging \label{debugging}}
Guido van Rossumae110af1997-05-22 20:11:52 +00003024
Fred Drakee5bf8b21998-02-12 21:22:28 +00003025XXX Explain Py_DEBUG, Py_TRACE_REFS, Py_REF_DEBUG.
Guido van Rossum5b8a5231997-12-30 04:38:44 +00003026
3027
Fred Drakef3aa0e01998-03-17 06:23:13 +00003028\input{api.ind} % Index -- must be last
Guido van Rossum9231c8f1997-05-15 21:43:21 +00003029
3030\end{document}