blob: a625d14d033425c92d8d2343243dadaf51c3fb08 [file] [log] [blame]
Fred Drake6659c301998-03-03 22:02:19 +00001\documentclass{manual}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00002
Guido van Rossum9faf4c51997-10-07 14:38:54 +00003\title{Python/C API Reference Manual}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00004
5\input{boilerplate}
6
7\makeindex % tell \index to actually write the .idx file
8
9
10\begin{document}
11
Guido van Rossum9231c8f1997-05-15 21:43:21 +000012\maketitle
13
Fred Drake9f86b661998-07-28 21:55:19 +000014\ifhtml
15\chapter*{Front Matter\label{front}}
16\fi
17
Guido van Rossum9231c8f1997-05-15 21:43:21 +000018\input{copyright}
19
20\begin{abstract}
21
22\noindent
Fred Drakee058b4f1998-02-16 06:15:35 +000023This manual documents the API used by \C{} (or \Cpp{}) programmers who
24want to write extension modules or embed Python. It is a companion to
25\emph{Extending and Embedding the Python Interpreter}, which describes
Guido van Rossum9231c8f1997-05-15 21:43:21 +000026the general principles of extension writing but does not document the
27API functions in detail.
28
Guido van Rossum5b8a5231997-12-30 04:38:44 +000029\strong{Warning:} The current version of this document is incomplete.
30I hope that it is nevertheless useful. I will continue to work on it,
31and release new versions from time to time, independent from Python
32source code releases.
33
Guido van Rossum9231c8f1997-05-15 21:43:21 +000034\end{abstract}
35
Fred Drake4d4f9e71998-01-13 22:25:02 +000036\tableofcontents
Guido van Rossum9231c8f1997-05-15 21:43:21 +000037
Guido van Rossum5060b3b1997-08-17 18:02:23 +000038% XXX Consider moving all this back to ext.tex and giving api.tex
39% XXX a *really* short intro only.
Guido van Rossum9231c8f1997-05-15 21:43:21 +000040
Fred Drakeefd146c1999-02-15 15:30:45 +000041\chapter{Introduction \label{intro}}
Guido van Rossum9231c8f1997-05-15 21:43:21 +000042
Fred Drakeb0a78731998-01-13 18:51:10 +000043The Application Programmer's Interface to Python gives \C{} and \Cpp{}
Guido van Rossum59a61351997-08-14 20:34:33 +000044programmers access to the Python interpreter at a variety of levels.
Fred Drakeb0a78731998-01-13 18:51:10 +000045The API is equally usable from \Cpp{}, but for brevity it is generally
46referred to as the Python/\C{} API. There are two fundamentally
Fred Drakee058b4f1998-02-16 06:15:35 +000047different reasons for using the Python/\C{} API. The first reason is
48to write \emph{extension modules} for specific purposes; these are
49\C{} modules that extend the Python interpreter. This is probably the
50most common use. The second reason is to use Python as a component in
51a larger application; this technique is generally referred to as
52\dfn{embedding} Python in an application.
Guido van Rossum59a61351997-08-14 20:34:33 +000053
Guido van Rossum4a944d71997-08-14 20:35:38 +000054Writing an extension module is a relatively well-understood process,
55where a ``cookbook'' approach works well. There are several tools
56that automate the process to some extent. While people have embedded
57Python in other applications since its early existence, the process of
58embedding Python is less straightforward that writing an extension.
59Python 1.5 introduces a number of new API functions as well as some
60changes to the build process that make embedding much simpler.
Fred Drakec6fa34e1998-04-02 06:47:24 +000061This manual describes the \version\ state of affairs.
Guido van Rossum59a61351997-08-14 20:34:33 +000062% XXX Eventually, take the historical notes out
63
Guido van Rossum4a944d71997-08-14 20:35:38 +000064Many API functions are useful independent of whether you're embedding
65or extending Python; moreover, most applications that embed Python
66will need to provide a custom extension as well, so it's probably a
67good idea to become familiar with writing an extension before
Guido van Rossum59a61351997-08-14 20:34:33 +000068attempting to embed Python in a real application.
69
Fred Drakeefd146c1999-02-15 15:30:45 +000070
71\section{Include Files \label{includes}}
Guido van Rossum580aa8d1997-11-25 15:34:51 +000072
73All function, type and macro definitions needed to use the Python/C
74API are included in your code by the following line:
75
Fred Drakee058b4f1998-02-16 06:15:35 +000076\begin{verbatim}
77#include "Python.h"
78\end{verbatim}
Guido van Rossum580aa8d1997-11-25 15:34:51 +000079
Fred Drakee058b4f1998-02-16 06:15:35 +000080This implies inclusion of the following standard headers:
81\code{<stdio.h>}, \code{<string.h>}, \code{<errno.h>}, and
82\code{<stdlib.h>} (if available).
Guido van Rossum580aa8d1997-11-25 15:34:51 +000083
84All user visible names defined by Python.h (except those defined by
Fred Drakee058b4f1998-02-16 06:15:35 +000085the included standard headers) have one of the prefixes \samp{Py} or
86\samp{_Py}. Names beginning with \samp{_Py} are for internal use
Guido van Rossum580aa8d1997-11-25 15:34:51 +000087only. Structure member names do not have a reserved prefix.
88
Fred Drakee058b4f1998-02-16 06:15:35 +000089\strong{Important:} user code should never define names that begin
90with \samp{Py} or \samp{_Py}. This confuses the reader, and
91jeopardizes the portability of the user code to future Python
92versions, which may define additional names beginning with one of
93these prefixes.
Guido van Rossum580aa8d1997-11-25 15:34:51 +000094
Fred Drakeefd146c1999-02-15 15:30:45 +000095
96\section{Objects, Types and Reference Counts \label{objects}}
Guido van Rossum59a61351997-08-14 20:34:33 +000097
Guido van Rossum580aa8d1997-11-25 15:34:51 +000098Most Python/C API functions have one or more arguments as well as a
Fred Drakef8830d11998-04-23 14:06:01 +000099return value of type \ctype{PyObject *}. This type is a pointer
Fred Drakee058b4f1998-02-16 06:15:35 +0000100to an opaque data type representing an arbitrary Python
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000101object. Since all Python object types are treated the same way by the
102Python language in most situations (e.g., assignments, scope rules,
103and argument passing), it is only fitting that they should be
Fred Drakeb0a78731998-01-13 18:51:10 +0000104represented by a single \C{} type. All Python objects live on the heap:
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000105you never declare an automatic or static variable of type
Fred Drakef8830d11998-04-23 14:06:01 +0000106\ctype{PyObject}, only pointer variables of type \ctype{PyObject *} can
Guido van Rossum59a61351997-08-14 20:34:33 +0000107be declared.
108
Fred Drakee058b4f1998-02-16 06:15:35 +0000109All Python objects (even Python integers) have a \dfn{type} and a
110\dfn{reference count}. An object's type determines what kind of object
Guido van Rossum4a944d71997-08-14 20:35:38 +0000111it is (e.g., an integer, a list, or a user-defined function; there are
Fred Drakee058b4f1998-02-16 06:15:35 +0000112many more as explained in the \emph{Python Reference Manual}). For
Guido van Rossum4a944d71997-08-14 20:35:38 +0000113each of the well-known types there is a macro to check whether an
Fred Drakee058b4f1998-02-16 06:15:35 +0000114object is of that type; for instance, \samp{PyList_Check(\var{a})} is
115true iff the object pointed to by \var{a} is a Python list.
Guido van Rossum59a61351997-08-14 20:34:33 +0000116
Fred Drakeefd146c1999-02-15 15:30:45 +0000117
118\subsection{Reference Counts \label{refcounts}}
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000119
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000120The reference count is important because today's computers have a
Fred Drake003d8da1998-04-13 00:53:42 +0000121finite (and often severely limited) memory size; it counts how many
Guido van Rossum4a944d71997-08-14 20:35:38 +0000122different places there are that have a reference to an object. Such a
Fred Drakeb0a78731998-01-13 18:51:10 +0000123place could be another object, or a global (or static) \C{} variable, or
124a local variable in some \C{} function. When an object's reference count
Guido van Rossum4a944d71997-08-14 20:35:38 +0000125becomes zero, the object is deallocated. If it contains references to
126other objects, their reference count is decremented. Those other
127objects may be deallocated in turn, if this decrement makes their
128reference count become zero, and so on. (There's an obvious problem
129with objects that reference each other here; for now, the solution is
Guido van Rossum59a61351997-08-14 20:34:33 +0000130``don't do that''.)
131
Guido van Rossum4a944d71997-08-14 20:35:38 +0000132Reference counts are always manipulated explicitly. The normal way is
Fred Drakee058b4f1998-02-16 06:15:35 +0000133to use the macro \cfunction{Py_INCREF()} to increment an object's
134reference count by one, and \cfunction{Py_DECREF()} to decrement it by
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000135one. The decref macro is considerably more complex than the incref one,
Guido van Rossum4a944d71997-08-14 20:35:38 +0000136since it must check whether the reference count becomes zero and then
137cause the object's deallocator, which is a function pointer contained
138in the object's type structure. The type-specific deallocator takes
139care of decrementing the reference counts for other objects contained
140in the object, and so on, if this is a compound object type such as a
141list. There's no chance that the reference count can overflow; at
142least as many bits are used to hold the reference count as there are
143distinct memory locations in virtual memory (assuming
144\code{sizeof(long) >= sizeof(char *)}). Thus, the reference count
Guido van Rossum59a61351997-08-14 20:34:33 +0000145increment is a simple operation.
146
Guido van Rossum4a944d71997-08-14 20:35:38 +0000147It is not necessary to increment an object's reference count for every
148local variable that contains a pointer to an object. In theory, the
Fred Drakee058b4f1998-02-16 06:15:35 +0000149object's reference count goes up by one when the variable is made to
Guido van Rossum4a944d71997-08-14 20:35:38 +0000150point to it and it goes down by one when the variable goes out of
151scope. However, these two cancel each other out, so at the end the
152reference count hasn't changed. The only real reason to use the
153reference count is to prevent the object from being deallocated as
154long as our variable is pointing to it. If we know that there is at
155least one other reference to the object that lives at least as long as
156our variable, there is no need to increment the reference count
157temporarily. An important situation where this arises is in objects
Fred Drakeb0a78731998-01-13 18:51:10 +0000158that are passed as arguments to \C{} functions in an extension module
Guido van Rossum4a944d71997-08-14 20:35:38 +0000159that are called from Python; the call mechanism guarantees to hold a
Guido van Rossum59a61351997-08-14 20:34:33 +0000160reference to every argument for the duration of the call.
161
Fred Drakee058b4f1998-02-16 06:15:35 +0000162However, a common pitfall is to extract an object from a list and
163hold on to it for a while without incrementing its reference count.
164Some other operation might conceivably remove the object from the
165list, decrementing its reference count and possible deallocating it.
166The real danger is that innocent-looking operations may invoke
167arbitrary Python code which could do this; there is a code path which
168allows control to flow back to the user from a \cfunction{Py_DECREF()},
169so almost any operation is potentially dangerous.
Guido van Rossum59a61351997-08-14 20:34:33 +0000170
Guido van Rossum4a944d71997-08-14 20:35:38 +0000171A safe approach is to always use the generic operations (functions
Fred Drakee058b4f1998-02-16 06:15:35 +0000172whose name begins with \samp{PyObject_}, \samp{PyNumber_},
173\samp{PySequence_} or \samp{PyMapping_}). These operations always
Guido van Rossum4a944d71997-08-14 20:35:38 +0000174increment the reference count of the object they return. This leaves
Fred Drakee058b4f1998-02-16 06:15:35 +0000175the caller with the responsibility to call \cfunction{Py_DECREF()}
176when they are done with the result; this soon becomes second nature.
Guido van Rossum59a61351997-08-14 20:34:33 +0000177
Fred Drakeefd146c1999-02-15 15:30:45 +0000178
179\subsubsection{Reference Count Details \label{refcountDetails}}
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000180
181The reference count behavior of functions in the Python/C API is best
182expelained in terms of \emph{ownership of references}. Note that we
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000183talk of owning references, never of owning objects; objects are always
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000184shared! When a function owns a reference, it has to dispose of it
Fred Drakee058b4f1998-02-16 06:15:35 +0000185properly --- either by passing ownership on (usually to its caller) or
186by calling \cfunction{Py_DECREF()} or \cfunction{Py_XDECREF()}. When
187a function passes ownership of a reference on to its caller, the
188caller is said to receive a \emph{new} reference. When no ownership
189is transferred, the caller is said to \emph{borrow} the reference.
190Nothing needs to be done for a borrowed reference.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000191
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000192Conversely, when calling a function passes it a reference to an
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000193object, there are two possibilities: the function \emph{steals} a
194reference to the object, or it does not. Few functions steal
Fred Drakee058b4f1998-02-16 06:15:35 +0000195references; the two notable exceptions are
196\cfunction{PyList_SetItem()} and \cfunction{PyTuple_SetItem()}, which
197steal a reference to the item (but not to the tuple or list into which
Fred Drake003d8da1998-04-13 00:53:42 +0000198the item is put!). These functions were designed to steal a reference
Fred Drakee058b4f1998-02-16 06:15:35 +0000199because of a common idiom for populating a tuple or list with newly
200created objects; for example, the code to create the tuple \code{(1,
2012, "three")} could look like this (forgetting about error handling for
202the moment; a better way to code this is shown below anyway):
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000203
204\begin{verbatim}
205PyObject *t;
Fred Drakec6fa34e1998-04-02 06:47:24 +0000206
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000207t = PyTuple_New(3);
208PyTuple_SetItem(t, 0, PyInt_FromLong(1L));
209PyTuple_SetItem(t, 1, PyInt_FromLong(2L));
210PyTuple_SetItem(t, 2, PyString_FromString("three"));
211\end{verbatim}
212
Fred Drakee058b4f1998-02-16 06:15:35 +0000213Incidentally, \cfunction{PyTuple_SetItem()} is the \emph{only} way to
214set tuple items; \cfunction{PySequence_SetItem()} and
215\cfunction{PyObject_SetItem()} refuse to do this since tuples are an
216immutable data type. You should only use
217\cfunction{PyTuple_SetItem()} for tuples that you are creating
Guido van Rossum5b8a5231997-12-30 04:38:44 +0000218yourself.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000219
220Equivalent code for populating a list can be written using
Fred Drakee058b4f1998-02-16 06:15:35 +0000221\cfunction{PyList_New()} and \cfunction{PyList_SetItem()}. Such code
222can also use \cfunction{PySequence_SetItem()}; this illustrates the
223difference between the two (the extra \cfunction{Py_DECREF()} calls):
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000224
225\begin{verbatim}
226PyObject *l, *x;
Fred Drakec6fa34e1998-04-02 06:47:24 +0000227
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000228l = PyList_New(3);
229x = PyInt_FromLong(1L);
Guido van Rossum5b8a5231997-12-30 04:38:44 +0000230PySequence_SetItem(l, 0, x); Py_DECREF(x);
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000231x = PyInt_FromLong(2L);
Guido van Rossum5b8a5231997-12-30 04:38:44 +0000232PySequence_SetItem(l, 1, x); Py_DECREF(x);
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000233x = PyString_FromString("three");
Guido van Rossum5b8a5231997-12-30 04:38:44 +0000234PySequence_SetItem(l, 2, x); Py_DECREF(x);
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000235\end{verbatim}
236
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000237You might find it strange that the ``recommended'' approach takes more
238code. However, in practice, you will rarely use these ways of
239creating and populating a tuple or list. There's a generic function,
Fred Drakee058b4f1998-02-16 06:15:35 +0000240\cfunction{Py_BuildValue()}, that can create most common objects from
241\C{} values, directed by a \dfn{format string}. For example, the
242above two blocks of code could be replaced by the following (which
243also takes care of the error checking):
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000244
245\begin{verbatim}
246PyObject *t, *l;
Fred Drakec6fa34e1998-04-02 06:47:24 +0000247
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000248t = Py_BuildValue("(iis)", 1, 2, "three");
249l = Py_BuildValue("[iis]", 1, 2, "three");
250\end{verbatim}
251
Fred Drakee058b4f1998-02-16 06:15:35 +0000252It is much more common to use \cfunction{PyObject_SetItem()} and
253friends with items whose references you are only borrowing, like
254arguments that were passed in to the function you are writing. In
255that case, their behaviour regarding reference counts is much saner,
256since you don't have to increment a reference count so you can give a
257reference away (``have it be stolen''). For example, this function
258sets all items of a list (actually, any mutable sequence) to a given
259item:
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000260
261\begin{verbatim}
262int set_all(PyObject *target, PyObject *item)
263{
264 int i, n;
Fred Drakec6fa34e1998-04-02 06:47:24 +0000265
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000266 n = PyObject_Length(target);
267 if (n < 0)
268 return -1;
269 for (i = 0; i < n; i++) {
270 if (PyObject_SetItem(target, i, item) < 0)
271 return -1;
272 }
273 return 0;
274}
275\end{verbatim}
276
277The situation is slightly different for function return values.
278While passing a reference to most functions does not change your
279ownership responsibilities for that reference, many functions that
280return a referece to an object give you ownership of the reference.
281The reason is simple: in many cases, the returned object is created
282on the fly, and the reference you get is the only reference to the
Fred Drakee058b4f1998-02-16 06:15:35 +0000283object. Therefore, the generic functions that return object
284references, like \cfunction{PyObject_GetItem()} and
285\cfunction{PySequence_GetItem()}, always return a new reference (i.e.,
286the caller becomes the owner of the reference).
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000287
288It is important to realize that whether you own a reference returned
Fred Drakee058b4f1998-02-16 06:15:35 +0000289by a function depends on which function you call only --- \emph{the
290plumage} (i.e., the type of the type of the object passed as an
291argument to the function) \emph{doesn't enter into it!} Thus, if you
292extract an item from a list using \cfunction{PyList_GetItem()}, you
293don't own the reference --- but if you obtain the same item from the
294same list using \cfunction{PySequence_GetItem()} (which happens to
295take exactly the same arguments), you do own a reference to the
296returned object.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000297
Fred Drakee058b4f1998-02-16 06:15:35 +0000298Here is an example of how you could write a function that computes the
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000299sum of the items in a list of integers; once using
Fred Drakee058b4f1998-02-16 06:15:35 +0000300\cfunction{PyList_GetItem()}, once using
301\cfunction{PySequence_GetItem()}.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000302
303\begin{verbatim}
304long sum_list(PyObject *list)
305{
306 int i, n;
307 long total = 0;
308 PyObject *item;
Fred Drakec6fa34e1998-04-02 06:47:24 +0000309
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000310 n = PyList_Size(list);
311 if (n < 0)
312 return -1; /* Not a list */
313 for (i = 0; i < n; i++) {
314 item = PyList_GetItem(list, i); /* Can't fail */
315 if (!PyInt_Check(item)) continue; /* Skip non-integers */
316 total += PyInt_AsLong(item);
317 }
318 return total;
319}
320\end{verbatim}
321
322\begin{verbatim}
323long sum_sequence(PyObject *sequence)
324{
325 int i, n;
326 long total = 0;
327 PyObject *item;
328 n = PyObject_Size(list);
329 if (n < 0)
330 return -1; /* Has no length */
331 for (i = 0; i < n; i++) {
332 item = PySequence_GetItem(list, i);
333 if (item == NULL)
334 return -1; /* Not a sequence, or other failure */
335 if (PyInt_Check(item))
336 total += PyInt_AsLong(item);
Guido van Rossum5b8a5231997-12-30 04:38:44 +0000337 Py_DECREF(item); /* Discard reference ownership */
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000338 }
339 return total;
340}
341\end{verbatim}
342
Fred Drakeefd146c1999-02-15 15:30:45 +0000343
344\subsection{Types \label{types}}
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000345
346There are few other data types that play a significant role in
Fred Drakef8830d11998-04-23 14:06:01 +0000347the Python/C API; most are simple \C{} types such as \ctype{int},
348\ctype{long}, \ctype{double} and \ctype{char *}. A few structure types
Guido van Rossum4a944d71997-08-14 20:35:38 +0000349are used to describe static tables used to list the functions exported
350by a module or the data attributes of a new object type. These will
Guido van Rossum59a61351997-08-14 20:34:33 +0000351be discussed together with the functions that use them.
352
Fred Drakeefd146c1999-02-15 15:30:45 +0000353
354\section{Exceptions \label{exceptions}}
Guido van Rossum59a61351997-08-14 20:34:33 +0000355
Guido van Rossum4a944d71997-08-14 20:35:38 +0000356The Python programmer only needs to deal with exceptions if specific
357error handling is required; unhandled exceptions are automatically
358propagated to the caller, then to the caller's caller, and so on, till
359they reach the top-level interpreter, where they are reported to the
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000360user accompanied by a stack traceback.
Guido van Rossum59a61351997-08-14 20:34:33 +0000361
Fred Drakeb0a78731998-01-13 18:51:10 +0000362For \C{} programmers, however, error checking always has to be explicit.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000363All functions in the Python/C API can raise exceptions, unless an
364explicit claim is made otherwise in a function's documentation. In
365general, when a function encounters an error, it sets an exception,
366discards any object references that it owns, and returns an
Fred Drakee058b4f1998-02-16 06:15:35 +0000367error indicator --- usually \NULL{} or \code{-1}. A few functions
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000368return a Boolean true/false result, with false indicating an error.
369Very few functions return no explicit error indicator or have an
370ambiguous return value, and require explicit testing for errors with
Fred Drakee058b4f1998-02-16 06:15:35 +0000371\cfunction{PyErr_Occurred()}.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000372
373Exception state is maintained in per-thread storage (this is
374equivalent to using global storage in an unthreaded application). A
Fred Drakec6fa34e1998-04-02 06:47:24 +0000375thread can be in one of two states: an exception has occurred, or not.
Fred Drakee058b4f1998-02-16 06:15:35 +0000376The function \cfunction{PyErr_Occurred()} can be used to check for
377this: it returns a borrowed reference to the exception type object
378when an exception has occurred, and \NULL{} otherwise. There are a
379number of functions to set the exception state:
380\cfunction{PyErr_SetString()} is the most common (though not the most
381general) function to set the exception state, and
382\cfunction{PyErr_Clear()} clears the exception state.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000383
384The full exception state consists of three objects (all of which can
Fred Drakee058b4f1998-02-16 06:15:35 +0000385be \NULL{}): the exception type, the corresponding exception
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000386value, and the traceback. These have the same meanings as the Python
387object \code{sys.exc_type}, \code{sys.exc_value},
388\code{sys.exc_traceback}; however, they are not the same: the Python
389objects represent the last exception being handled by a Python
Fred Drakee058b4f1998-02-16 06:15:35 +0000390\keyword{try} \ldots\ \keyword{except} statement, while the \C{} level
391exception state only exists while an exception is being passed on
392between \C{} functions until it reaches the Python interpreter, which
393takes care of transferring it to \code{sys.exc_type} and friends.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000394
Fred Drakec6fa34e1998-04-02 06:47:24 +0000395Note that starting with Python 1.5, the preferred, thread-safe way to
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000396access the exception state from Python code is to call the function
Fred Drakee058b4f1998-02-16 06:15:35 +0000397\function{sys.exc_info()}, which returns the per-thread exception state
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000398for Python code. Also, the semantics of both ways to access the
399exception state have changed so that a function which catches an
400exception will save and restore its thread's exception state so as to
401preserve the exception state of its caller. This prevents common bugs
402in exception handling code caused by an innocent-looking function
403overwriting the exception being handled; it also reduces the often
404unwanted lifetime extension for objects that are referenced by the
Fred Drakec6fa34e1998-04-02 06:47:24 +0000405stack frames in the traceback.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000406
407As a general principle, a function that calls another function to
408perform some task should check whether the called function raised an
409exception, and if so, pass the exception state on to its caller. It
Fred Drakee058b4f1998-02-16 06:15:35 +0000410should discard any object references that it owns, and returns an
411error indicator, but it should \emph{not} set another exception ---
412that would overwrite the exception that was just raised, and lose
413important information about the exact cause of the error.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000414
415A simple example of detecting exceptions and passing them on is shown
Fred Drakee058b4f1998-02-16 06:15:35 +0000416in the \cfunction{sum_sequence()} example above. It so happens that
417that example doesn't need to clean up any owned references when it
418detects an error. The following example function shows some error
419cleanup. First, to remind you why you like Python, we show the
420equivalent Python code:
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000421
422\begin{verbatim}
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000423def incr_item(dict, key):
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000424 try:
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000425 item = dict[key]
426 except KeyError:
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000427 item = 0
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000428 return item + 1
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000429\end{verbatim}
430
Fred Drakeb0a78731998-01-13 18:51:10 +0000431Here is the corresponding \C{} code, in all its glory:
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000432
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000433\begin{verbatim}
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000434int incr_item(PyObject *dict, PyObject *key)
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000435{
436 /* Objects all initialized to NULL for Py_XDECREF */
437 PyObject *item = NULL, *const_one = NULL, *incremented_item = NULL;
Guido van Rossum5b8a5231997-12-30 04:38:44 +0000438 int rv = -1; /* Return value initialized to -1 (failure) */
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000439
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000440 item = PyObject_GetItem(dict, key);
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000441 if (item == NULL) {
Fred Drakec6fa34e1998-04-02 06:47:24 +0000442 /* Handle KeyError only: */
443 if (!PyErr_ExceptionMatches(PyExc_KeyError)) goto error;
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000444
445 /* Clear the error and use zero: */
446 PyErr_Clear();
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000447 item = PyInt_FromLong(0L);
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000448 if (item == NULL) goto error;
449 }
450
451 const_one = PyInt_FromLong(1L);
452 if (const_one == NULL) goto error;
453
454 incremented_item = PyNumber_Add(item, const_one);
455 if (incremented_item == NULL) goto error;
456
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000457 if (PyObject_SetItem(dict, key, incremented_item) < 0) goto error;
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000458 rv = 0; /* Success */
459 /* Continue with cleanup code */
460
461 error:
462 /* Cleanup code, shared by success and failure path */
463
464 /* Use Py_XDECREF() to ignore NULL references */
465 Py_XDECREF(item);
466 Py_XDECREF(const_one);
467 Py_XDECREF(incremented_item);
468
469 return rv; /* -1 for error, 0 for success */
470}
471\end{verbatim}
472
Fred Drakef8830d11998-04-23 14:06:01 +0000473This example represents an endorsed use of the \keyword{goto} statement
Fred Drakee058b4f1998-02-16 06:15:35 +0000474in \C{}! It illustrates the use of
475\cfunction{PyErr_ExceptionMatches()} and \cfunction{PyErr_Clear()} to
476handle specific exceptions, and the use of \cfunction{Py_XDECREF()} to
477dispose of owned references that may be \NULL{} (note the \samp{X} in
478the name; \cfunction{Py_DECREF()} would crash when confronted with a
479\NULL{} reference). It is important that the variables used to hold
480owned references are initialized to \NULL{} for this to work;
481likewise, the proposed return value is initialized to \code{-1}
482(failure) and only set to success after the final call made is
483successful.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000484
Guido van Rossum59a61351997-08-14 20:34:33 +0000485
Fred Drakeefd146c1999-02-15 15:30:45 +0000486\section{Embedding Python \label{embedding}}
Guido van Rossum59a61351997-08-14 20:34:33 +0000487
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000488The one important task that only embedders (as opposed to extension
489writers) of the Python interpreter have to worry about is the
490initialization, and possibly the finalization, of the Python
491interpreter. Most functionality of the interpreter can only be used
492after the interpreter has been initialized.
Guido van Rossum59a61351997-08-14 20:34:33 +0000493
Fred Drakee058b4f1998-02-16 06:15:35 +0000494The basic initialization function is \cfunction{Py_Initialize()}.
495This initializes the table of loaded modules, and creates the
Fred Drake4de05a91998-02-16 14:25:26 +0000496fundamental modules \module{__builtin__}\refbimodindex{__builtin__},
497\module{__main__}\refbimodindex{__main__} and
498\module{sys}\refbimodindex{sys}. It also initializes the module
Fred Drakec6fa34e1998-04-02 06:47:24 +0000499search path (\code{sys.path}).%
500\indexiii{module}{search}{path}
Guido van Rossum59a61351997-08-14 20:34:33 +0000501
Fred Drakee058b4f1998-02-16 06:15:35 +0000502\cfunction{Py_Initialize()} does not set the ``script argument list''
Guido van Rossum4a944d71997-08-14 20:35:38 +0000503(\code{sys.argv}). If this variable is needed by Python code that
504will be executed later, it must be set explicitly with a call to
505\code{PySys_SetArgv(\var{argc}, \var{argv})} subsequent to the call
Fred Drakee058b4f1998-02-16 06:15:35 +0000506to \cfunction{Py_Initialize()}.
Guido van Rossum59a61351997-08-14 20:34:33 +0000507
Fred Drakeb0a78731998-01-13 18:51:10 +0000508On most systems (in particular, on \UNIX{} and Windows, although the
Fred Drakee058b4f1998-02-16 06:15:35 +0000509details are slightly different), \cfunction{Py_Initialize()}
510calculates the module search path based upon its best guess for the
511location of the standard Python interpreter executable, assuming that
512the Python library is found in a fixed location relative to the Python
Guido van Rossum42cefd01997-10-05 15:27:29 +0000513interpreter executable. In particular, it looks for a directory named
Fred Drake2de75ec1998-04-09 14:12:11 +0000514\file{lib/python1.5} (replacing \file{1.5} with the current
Guido van Rossum42cefd01997-10-05 15:27:29 +0000515interpreter version) relative to the parent directory where the
Fred Drakee058b4f1998-02-16 06:15:35 +0000516executable named \file{python} is found on the shell command search
Fred Drakec6fa34e1998-04-02 06:47:24 +0000517path (the environment variable \envvar{PATH}).
Guido van Rossum42cefd01997-10-05 15:27:29 +0000518
519For instance, if the Python executable is found in
Fred Drakee058b4f1998-02-16 06:15:35 +0000520\file{/usr/local/bin/python}, it will assume that the libraries are in
Fred Drake2de75ec1998-04-09 14:12:11 +0000521\file{/usr/local/lib/python1.5}. (In fact, this particular path
Fred Drakee058b4f1998-02-16 06:15:35 +0000522is also the ``fallback'' location, used when no executable file named
Fred Drakec6fa34e1998-04-02 06:47:24 +0000523\file{python} is found along \envvar{PATH}.) The user can override
524this behavior by setting the environment variable \envvar{PYTHONHOME},
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000525or insert additional directories in front of the standard path by
Fred Drakec6fa34e1998-04-02 06:47:24 +0000526setting \envvar{PYTHONPATH}.
Guido van Rossum59a61351997-08-14 20:34:33 +0000527
Guido van Rossum4a944d71997-08-14 20:35:38 +0000528The embedding application can steer the search by calling
529\code{Py_SetProgramName(\var{file})} \emph{before} calling
Fred Drakec6fa34e1998-04-02 06:47:24 +0000530\cfunction{Py_Initialize()}. Note that \envvar{PYTHONHOME} still
531overrides this and \envvar{PYTHONPATH} is still inserted in front of
Fred Drakee058b4f1998-02-16 06:15:35 +0000532the standard path. An application that requires total control has to
533provide its own implementation of \cfunction{Py_GetPath()},
534\cfunction{Py_GetPrefix()}, \cfunction{Py_GetExecPrefix()},
535\cfunction{Py_GetProgramFullPath()} (all defined in
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000536\file{Modules/getpath.c}).
Guido van Rossum59a61351997-08-14 20:34:33 +0000537
Guido van Rossum4a944d71997-08-14 20:35:38 +0000538Sometimes, it is desirable to ``uninitialize'' Python. For instance,
539the application may want to start over (make another call to
Fred Drakee058b4f1998-02-16 06:15:35 +0000540\cfunction{Py_Initialize()}) or the application is simply done with its
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000541use of Python and wants to free all memory allocated by Python. This
Fred Drakee058b4f1998-02-16 06:15:35 +0000542can be accomplished by calling \cfunction{Py_Finalize()}. The function
543\cfunction{Py_IsInitialized()} returns true iff Python is currently in the
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000544initialized state. More information about these functions is given in
545a later chapter.
Guido van Rossum59a61351997-08-14 20:34:33 +0000546
Guido van Rossum4a944d71997-08-14 20:35:38 +0000547
Fred Drakeefd146c1999-02-15 15:30:45 +0000548\chapter{The Very High Level Layer \label{veryhigh}}
Guido van Rossum4a944d71997-08-14 20:35:38 +0000549
Fred Drakee5bf8b21998-02-12 21:22:28 +0000550The functions in this chapter will let you execute Python source code
551given in a file or a buffer, but they will not let you interact in a
552more detailed way with the interpreter.
Guido van Rossum4a944d71997-08-14 20:35:38 +0000553
Fred Drakec6fa34e1998-04-02 06:47:24 +0000554\begin{cfuncdesc}{int}{PyRun_AnyFile}{FILE *fp, char *filename}
Fred Drake0041a941999-04-29 04:20:46 +0000555 If \var{fp} refers to a file associated with an interactive device
556 (console or terminal input or \UNIX{} pseudo-terminal), return the
557 value of \cfunction{PyRun_InteractiveLoop()}, otherwise return the
558 result of \cfunction{PyRun_SimpleFile()}. If \var{filename} is
559 \NULL{}, use \code{"???"} as the filename.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000560\end{cfuncdesc}
561
Fred Drakec6fa34e1998-04-02 06:47:24 +0000562\begin{cfuncdesc}{int}{PyRun_SimpleString}{char *command}
Fred Drake0041a941999-04-29 04:20:46 +0000563 Executes the Python source code from \var{command} in the
564 \module{__main__} module. If \module{__main__} does not already
565 exist, it is created. Returns \code{0} on success or \code{-1} if
566 an exception was raised. If there was an error, there is no way to
567 get the exception information.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000568\end{cfuncdesc}
569
Fred Drakec6fa34e1998-04-02 06:47:24 +0000570\begin{cfuncdesc}{int}{PyRun_SimpleFile}{FILE *fp, char *filename}
Fred Drake0041a941999-04-29 04:20:46 +0000571 Similar to \cfunction{PyRun_SimpleString()}, but the Python source
572 code is read from \var{fp} instead of an in-memory string.
573 \var{filename} should be the name of the file.
Fred Drakee5bf8b21998-02-12 21:22:28 +0000574\end{cfuncdesc}
575
Fred Drakec6fa34e1998-04-02 06:47:24 +0000576\begin{cfuncdesc}{int}{PyRun_InteractiveOne}{FILE *fp, char *filename}
Fred Drakee5bf8b21998-02-12 21:22:28 +0000577\end{cfuncdesc}
578
Fred Drakec6fa34e1998-04-02 06:47:24 +0000579\begin{cfuncdesc}{int}{PyRun_InteractiveLoop}{FILE *fp, char *filename}
Fred Drakee5bf8b21998-02-12 21:22:28 +0000580\end{cfuncdesc}
581
Fred Drakec6fa34e1998-04-02 06:47:24 +0000582\begin{cfuncdesc}{struct _node*}{PyParser_SimpleParseString}{char *str,
583 int start}
Fred Drake0041a941999-04-29 04:20:46 +0000584 Parse Python source code from \var{str} using the start token
585 \var{start}. The result can be used to create a code object which
586 can be evaluated efficiently. This is useful if a code fragment
587 must be evaluated many times.
Fred Drakee5bf8b21998-02-12 21:22:28 +0000588\end{cfuncdesc}
589
Fred Drakec6fa34e1998-04-02 06:47:24 +0000590\begin{cfuncdesc}{struct _node*}{PyParser_SimpleParseFile}{FILE *fp,
591 char *filename, int start}
Fred Drake0041a941999-04-29 04:20:46 +0000592 Similar to \cfunction{PyParser_SimpleParseString()}, but the Python
593 source code is read from \var{fp} instead of an in-memory string.
594 \var{filename} should be the name of the file.
Fred Drakee5bf8b21998-02-12 21:22:28 +0000595\end{cfuncdesc}
596
Fred Drakec6fa34e1998-04-02 06:47:24 +0000597\begin{cfuncdesc}{PyObject*}{PyRun_String}{char *str, int start,
598 PyObject *globals,
599 PyObject *locals}
Fred Drake0041a941999-04-29 04:20:46 +0000600 Execute Python source code from \var{str} in the context specified
601 by the dictionaries \var{globals} and \var{locals}. The parameter
602 \var{start} specifies the start token that should be used to parse
603 the source code.
604
605 Returns the result of executing the code as a Python object, or
606 \NULL{} if an exception was raised.
Fred Drakee5bf8b21998-02-12 21:22:28 +0000607\end{cfuncdesc}
608
Fred Drakec6fa34e1998-04-02 06:47:24 +0000609\begin{cfuncdesc}{PyObject*}{PyRun_File}{FILE *fp, char *filename,
610 int start, PyObject *globals,
611 PyObject *locals}
Fred Drake0041a941999-04-29 04:20:46 +0000612 Similar to \cfunction{PyRun_String()}, but the Python source code is
613 read from \var{fp} instead of an in-memory string. \var{filename}
614 should be the name of the file.
Fred Drakee5bf8b21998-02-12 21:22:28 +0000615\end{cfuncdesc}
616
Fred Drakec6fa34e1998-04-02 06:47:24 +0000617\begin{cfuncdesc}{PyObject*}{Py_CompileString}{char *str, char *filename,
618 int start}
Fred Drake0041a941999-04-29 04:20:46 +0000619 Parse and compile the Python source code in \var{str}, returning the
620 resulting code object. The start token is given by \var{start};
621 this can be used to constrain the code which can be compiled. The
622 filename specified by \var{filename} is used to construct the code
623 object and may appear in tracebacks or \exception{SyntaxError}
624 exception messages. This returns \NULL{} if the code cannot be
625 parsed or compiled.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000626\end{cfuncdesc}
627
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000628
Fred Drakeefd146c1999-02-15 15:30:45 +0000629\chapter{Reference Counting \label{countingRefs}}
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000630
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000631The macros in this section are used for managing reference counts
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000632of Python objects.
633
634\begin{cfuncdesc}{void}{Py_INCREF}{PyObject *o}
Fred Drakec6fa34e1998-04-02 06:47:24 +0000635Increment the reference count for object \var{o}. The object must
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000636not be \NULL{}; if you aren't sure that it isn't \NULL{}, use
Fred Drakee058b4f1998-02-16 06:15:35 +0000637\cfunction{Py_XINCREF()}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000638\end{cfuncdesc}
639
640\begin{cfuncdesc}{void}{Py_XINCREF}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +0000641Increment the reference count for object \var{o}. The object may be
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000642\NULL{}, in which case the macro has no effect.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000643\end{cfuncdesc}
644
645\begin{cfuncdesc}{void}{Py_DECREF}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +0000646Decrement the reference count for object \var{o}. The object must
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000647not be \NULL{}; if you aren't sure that it isn't \NULL{}, use
Fred Drakee058b4f1998-02-16 06:15:35 +0000648\cfunction{Py_XDECREF()}. If the reference count reaches zero, the
649object's type's deallocation function (which must not be \NULL{}) is
650invoked.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000651
652\strong{Warning:} The deallocation function can cause arbitrary Python
Fred Drakee058b4f1998-02-16 06:15:35 +0000653code to be invoked (e.g. when a class instance with a \method{__del__()}
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000654method is deallocated). While exceptions in such code are not
655propagated, the executed code has free access to all Python global
656variables. This means that any object that is reachable from a global
Fred Drakee058b4f1998-02-16 06:15:35 +0000657variable should be in a consistent state before \cfunction{Py_DECREF()} is
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000658invoked. For example, code to delete an object from a list should
659copy a reference to the deleted object in a temporary variable, update
Fred Drakee058b4f1998-02-16 06:15:35 +0000660the list data structure, and then call \cfunction{Py_DECREF()} for the
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000661temporary variable.
662\end{cfuncdesc}
663
664\begin{cfuncdesc}{void}{Py_XDECREF}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +0000665Decrement the reference count for object \var{o}. The object may be
666\NULL{}, in which case the macro has no effect; otherwise the effect
667is the same as for \cfunction{Py_DECREF()}, and the same warning
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000668applies.
669\end{cfuncdesc}
670
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000671The following functions or macros are only for internal use:
Fred Drakee058b4f1998-02-16 06:15:35 +0000672\cfunction{_Py_Dealloc()}, \cfunction{_Py_ForgetReference()},
673\cfunction{_Py_NewReference()}, as well as the global variable
Fred Drakef8830d11998-04-23 14:06:01 +0000674\cdata{_Py_RefTotal}.
Guido van Rossumae110af1997-05-22 20:11:52 +0000675
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000676XXX Should mention Py_Malloc(), Py_Realloc(), Py_Free(),
677PyMem_Malloc(), PyMem_Realloc(), PyMem_Free(), PyMem_NEW(),
678PyMem_RESIZE(), PyMem_DEL(), PyMem_XDEL().
679
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000680
Fred Drakeefd146c1999-02-15 15:30:45 +0000681\chapter{Exception Handling \label{exceptionHandling}}
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000682
683The functions in this chapter will let you handle and raise Python
Guido van Rossumae110af1997-05-22 20:11:52 +0000684exceptions. It is important to understand some of the basics of
Fred Drakeb0a78731998-01-13 18:51:10 +0000685Python exception handling. It works somewhat like the \UNIX{}
Fred Drakef8830d11998-04-23 14:06:01 +0000686\cdata{errno} variable: there is a global indicator (per thread) of the
Guido van Rossumae110af1997-05-22 20:11:52 +0000687last error that occurred. Most functions don't clear this on success,
688but will set it to indicate the cause of the error on failure. Most
689functions also return an error indicator, usually \NULL{} if they are
Fred Drakee058b4f1998-02-16 06:15:35 +0000690supposed to return a pointer, or \code{-1} if they return an integer
Fred Drakef8830d11998-04-23 14:06:01 +0000691(exception: the \cfunction{PyArg_Parse*()} functions return \code{1} for
Fred Drakee058b4f1998-02-16 06:15:35 +0000692success and \code{0} for failure). When a function must fail because
693some function it called failed, it generally doesn't set the error
694indicator; the function it called already set it.
Guido van Rossumae110af1997-05-22 20:11:52 +0000695
696The error indicator consists of three Python objects corresponding to
697the Python variables \code{sys.exc_type}, \code{sys.exc_value} and
698\code{sys.exc_traceback}. API functions exist to interact with the
699error indicator in various ways. There is a separate error indicator
700for each thread.
701
702% XXX Order of these should be more thoughtful.
703% Either alphabetical or some kind of structure.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000704
705\begin{cfuncdesc}{void}{PyErr_Print}{}
Guido van Rossumae110af1997-05-22 20:11:52 +0000706Print a standard traceback to \code{sys.stderr} and clear the error
707indicator. Call this function only when the error indicator is set.
708(Otherwise it will cause a fatal error!)
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000709\end{cfuncdesc}
710
Fred Drakec6fa34e1998-04-02 06:47:24 +0000711\begin{cfuncdesc}{PyObject*}{PyErr_Occurred}{}
Guido van Rossumae110af1997-05-22 20:11:52 +0000712Test whether the error indicator is set. If set, return the exception
Fred Drakee058b4f1998-02-16 06:15:35 +0000713\emph{type} (the first argument to the last call to one of the
Fred Drakef8830d11998-04-23 14:06:01 +0000714\cfunction{PyErr_Set*()} functions or to \cfunction{PyErr_Restore()}). If
Fred Drakee058b4f1998-02-16 06:15:35 +0000715not set, return \NULL{}. You do not own a reference to the return
716value, so you do not need to \cfunction{Py_DECREF()} it.
717\strong{Note:} do not compare the return value to a specific
718exception; use \cfunction{PyErr_ExceptionMatches()} instead, shown
719below.
Guido van Rossum42cefd01997-10-05 15:27:29 +0000720\end{cfuncdesc}
721
722\begin{cfuncdesc}{int}{PyErr_ExceptionMatches}{PyObject *exc}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000723Equivalent to
Fred Drakee058b4f1998-02-16 06:15:35 +0000724\samp{PyErr_GivenExceptionMatches(PyErr_Occurred(), \var{exc})}.
Guido van Rossum42cefd01997-10-05 15:27:29 +0000725This should only be called when an exception is actually set.
726\end{cfuncdesc}
727
728\begin{cfuncdesc}{int}{PyErr_GivenExceptionMatches}{PyObject *given, PyObject *exc}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000729Return true if the \var{given} exception matches the exception in
730\var{exc}. If \var{exc} is a class object, this also returns true
731when \var{given} is a subclass. If \var{exc} is a tuple, all
732exceptions in the tuple (and recursively in subtuples) are searched
733for a match. This should only be called when an exception is actually
734set.
735\end{cfuncdesc}
736
737\begin{cfuncdesc}{void}{PyErr_NormalizeException}{PyObject**exc, PyObject**val, PyObject**tb}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000738Under certain circumstances, the values returned by
Fred Drakee058b4f1998-02-16 06:15:35 +0000739\cfunction{PyErr_Fetch()} below can be ``unnormalized'', meaning that
740\code{*\var{exc}} is a class object but \code{*\var{val}} is not an
741instance of the same class. This function can be used to instantiate
742the class in that case. If the values are already normalized, nothing
743happens.
Guido van Rossumae110af1997-05-22 20:11:52 +0000744\end{cfuncdesc}
745
746\begin{cfuncdesc}{void}{PyErr_Clear}{}
747Clear the error indicator. If the error indicator is not set, there
748is no effect.
749\end{cfuncdesc}
750
751\begin{cfuncdesc}{void}{PyErr_Fetch}{PyObject **ptype, PyObject **pvalue, PyObject **ptraceback}
752Retrieve the error indicator into three variables whose addresses are
753passed. If the error indicator is not set, set all three variables to
754\NULL{}. If it is set, it will be cleared and you own a reference to
755each object retrieved. The value and traceback object may be \NULL{}
756even when the type object is not. \strong{Note:} this function is
757normally only used by code that needs to handle exceptions or by code
758that needs to save and restore the error indicator temporarily.
759\end{cfuncdesc}
760
761\begin{cfuncdesc}{void}{PyErr_Restore}{PyObject *type, PyObject *value, PyObject *traceback}
762Set the error indicator from the three objects. If the error
763indicator is already set, it is cleared first. If the objects are
764\NULL{}, the error indicator is cleared. Do not pass a \NULL{} type
765and non-\NULL{} value or traceback. The exception type should be a
766string or class; if it is a class, the value should be an instance of
767that class. Do not pass an invalid exception type or value.
768(Violating these rules will cause subtle problems later.) This call
769takes away a reference to each object, i.e. you must own a reference
770to each object before the call and after the call you no longer own
771these references. (If you don't understand this, don't use this
772function. I warned you.) \strong{Note:} this function is normally
773only used by code that needs to save and restore the error indicator
774temporarily.
775\end{cfuncdesc}
776
777\begin{cfuncdesc}{void}{PyErr_SetString}{PyObject *type, char *message}
778This is the most common way to set the error indicator. The first
779argument specifies the exception type; it is normally one of the
Fred Drakef8830d11998-04-23 14:06:01 +0000780standard exceptions, e.g. \cdata{PyExc_RuntimeError}. You need not
Guido van Rossumae110af1997-05-22 20:11:52 +0000781increment its reference count. The second argument is an error
782message; it is converted to a string object.
783\end{cfuncdesc}
784
785\begin{cfuncdesc}{void}{PyErr_SetObject}{PyObject *type, PyObject *value}
Fred Drakee058b4f1998-02-16 06:15:35 +0000786This function is similar to \cfunction{PyErr_SetString()} but lets you
Guido van Rossumae110af1997-05-22 20:11:52 +0000787specify an arbitrary Python object for the ``value'' of the exception.
788You need not increment its reference count.
789\end{cfuncdesc}
790
791\begin{cfuncdesc}{void}{PyErr_SetNone}{PyObject *type}
Fred Drakee058b4f1998-02-16 06:15:35 +0000792This is a shorthand for \samp{PyErr_SetObject(\var{type}, Py_None)}.
Guido van Rossumae110af1997-05-22 20:11:52 +0000793\end{cfuncdesc}
794
795\begin{cfuncdesc}{int}{PyErr_BadArgument}{}
Fred Drakee058b4f1998-02-16 06:15:35 +0000796This is a shorthand for \samp{PyErr_SetString(PyExc_TypeError,
Guido van Rossumae110af1997-05-22 20:11:52 +0000797\var{message})}, where \var{message} indicates that a built-in operation
798was invoked with an illegal argument. It is mostly for internal use.
799\end{cfuncdesc}
800
Fred Drakec6fa34e1998-04-02 06:47:24 +0000801\begin{cfuncdesc}{PyObject*}{PyErr_NoMemory}{}
Fred Drakee058b4f1998-02-16 06:15:35 +0000802This is a shorthand for \samp{PyErr_SetNone(PyExc_MemoryError)}; it
Guido van Rossumae110af1997-05-22 20:11:52 +0000803returns \NULL{} so an object allocation function can write
Fred Drakee058b4f1998-02-16 06:15:35 +0000804\samp{return PyErr_NoMemory();} when it runs out of memory.
Guido van Rossumae110af1997-05-22 20:11:52 +0000805\end{cfuncdesc}
806
Fred Drakec6fa34e1998-04-02 06:47:24 +0000807\begin{cfuncdesc}{PyObject*}{PyErr_SetFromErrno}{PyObject *type}
Fred Drakeb0a78731998-01-13 18:51:10 +0000808This is a convenience function to raise an exception when a \C{} library
Fred Drakef8830d11998-04-23 14:06:01 +0000809function has returned an error and set the \C{} variable \cdata{errno}.
Guido van Rossumae110af1997-05-22 20:11:52 +0000810It constructs a tuple object whose first item is the integer
Fred Drakef8830d11998-04-23 14:06:01 +0000811\cdata{errno} value and whose second item is the corresponding error
Fred Drakee058b4f1998-02-16 06:15:35 +0000812message (gotten from \cfunction{strerror()}), and then calls
813\samp{PyErr_SetObject(\var{type}, \var{object})}. On \UNIX{}, when
Fred Drakef8830d11998-04-23 14:06:01 +0000814the \cdata{errno} value is \constant{EINTR}, indicating an interrupted
Fred Drakee058b4f1998-02-16 06:15:35 +0000815system call, this calls \cfunction{PyErr_CheckSignals()}, and if that set
Guido van Rossumae110af1997-05-22 20:11:52 +0000816the error indicator, leaves it set to that. The function always
817returns \NULL{}, so a wrapper function around a system call can write
Fred Drakee058b4f1998-02-16 06:15:35 +0000818\samp{return PyErr_SetFromErrno();} when the system call returns an
819error.
Guido van Rossumae110af1997-05-22 20:11:52 +0000820\end{cfuncdesc}
821
822\begin{cfuncdesc}{void}{PyErr_BadInternalCall}{}
Fred Drakee058b4f1998-02-16 06:15:35 +0000823This is a shorthand for \samp{PyErr_SetString(PyExc_TypeError,
Guido van Rossumae110af1997-05-22 20:11:52 +0000824\var{message})}, where \var{message} indicates that an internal
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000825operation (e.g. a Python/C API function) was invoked with an illegal
Guido van Rossumae110af1997-05-22 20:11:52 +0000826argument. It is mostly for internal use.
827\end{cfuncdesc}
828
829\begin{cfuncdesc}{int}{PyErr_CheckSignals}{}
830This function interacts with Python's signal handling. It checks
831whether a signal has been sent to the processes and if so, invokes the
Fred Drake4de05a91998-02-16 14:25:26 +0000832corresponding signal handler. If the
833\module{signal}\refbimodindex{signal} module is supported, this can
834invoke a signal handler written in Python. In all cases, the default
835effect for \constant{SIGINT} is to raise the
836\exception{KeyboadInterrupt} exception. If an exception is raised the
Fred Drakee058b4f1998-02-16 06:15:35 +0000837error indicator is set and the function returns \code{1}; otherwise
838the function returns \code{0}. The error indicator may or may not be
839cleared if it was previously set.
Guido van Rossumae110af1997-05-22 20:11:52 +0000840\end{cfuncdesc}
841
842\begin{cfuncdesc}{void}{PyErr_SetInterrupt}{}
843This function is obsolete (XXX or platform dependent?). It simulates
Fred Drakee058b4f1998-02-16 06:15:35 +0000844the effect of a \constant{SIGINT} signal arriving --- the next time
845\cfunction{PyErr_CheckSignals()} is called,
846\exception{KeyboadInterrupt} will be raised.
Guido van Rossumae110af1997-05-22 20:11:52 +0000847\end{cfuncdesc}
848
Fred Drakec6fa34e1998-04-02 06:47:24 +0000849\begin{cfuncdesc}{PyObject*}{PyErr_NewException}{char *name,
850 PyObject *base,
851 PyObject *dict}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000852This utility function creates and returns a new exception object. The
Fred Drakeb0a78731998-01-13 18:51:10 +0000853\var{name} argument must be the name of the new exception, a \C{} string
Guido van Rossum42cefd01997-10-05 15:27:29 +0000854of the form \code{module.class}. The \var{base} and \var{dict}
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000855arguments are normally \NULL{}. Normally, this creates a class
Guido van Rossum42cefd01997-10-05 15:27:29 +0000856object derived from the root for all exceptions, the built-in name
Fred Drakef8830d11998-04-23 14:06:01 +0000857\exception{Exception} (accessible in \C{} as \cdata{PyExc_Exception}).
858In this case the \member{__module__} attribute of the new class is set to the
Guido van Rossum42cefd01997-10-05 15:27:29 +0000859first part (up to the last dot) of the \var{name} argument, and the
860class name is set to the last part (after the last dot). When the
861user has specified the \code{-X} command line option to use string
862exceptions, for backward compatibility, or when the \var{base}
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000863argument is not a class object (and not \NULL{}), a string object
Guido van Rossum42cefd01997-10-05 15:27:29 +0000864created from the entire \var{name} argument is returned. The
865\var{base} argument can be used to specify an alternate base class.
866The \var{dict} argument can be used to specify a dictionary of class
867variables and methods.
868\end{cfuncdesc}
869
870
Fred Drakeefd146c1999-02-15 15:30:45 +0000871\section{Standard Exceptions \label{standardExceptions}}
Guido van Rossumae110af1997-05-22 20:11:52 +0000872
873All standard Python exceptions are available as global variables whose
Fred Drakee058b4f1998-02-16 06:15:35 +0000874names are \samp{PyExc_} followed by the Python exception name.
Fred Drakef8830d11998-04-23 14:06:01 +0000875These have the type \ctype{PyObject *}; they are all either class
Fred Drakee058b4f1998-02-16 06:15:35 +0000876objects or string objects, depending on the use of the \code{-X}
877option to the interpreter. For completeness, here are all the
Fred Drake9d20ac31998-02-16 15:27:08 +0000878variables:
Fred Drakef8830d11998-04-23 14:06:01 +0000879\cdata{PyExc_Exception},
880\cdata{PyExc_StandardError},
881\cdata{PyExc_ArithmeticError},
882\cdata{PyExc_LookupError},
883\cdata{PyExc_AssertionError},
884\cdata{PyExc_AttributeError},
885\cdata{PyExc_EOFError},
Fred Drake127ed0a1999-02-17 23:09:05 +0000886\cdata{PyExc_EnvironmentError},
Fred Drakef8830d11998-04-23 14:06:01 +0000887\cdata{PyExc_FloatingPointError},
888\cdata{PyExc_IOError},
889\cdata{PyExc_ImportError},
890\cdata{PyExc_IndexError},
891\cdata{PyExc_KeyError},
892\cdata{PyExc_KeyboardInterrupt},
893\cdata{PyExc_MemoryError},
894\cdata{PyExc_NameError},
Fred Drake127ed0a1999-02-17 23:09:05 +0000895\cdata{PyExc_NotImplementedError},
896\cdata{PyExc_OSError},
Fred Drakef8830d11998-04-23 14:06:01 +0000897\cdata{PyExc_OverflowError},
898\cdata{PyExc_RuntimeError},
899\cdata{PyExc_SyntaxError},
900\cdata{PyExc_SystemError},
901\cdata{PyExc_SystemExit},
902\cdata{PyExc_TypeError},
903\cdata{PyExc_ValueError},
904\cdata{PyExc_ZeroDivisionError}.
Guido van Rossumae110af1997-05-22 20:11:52 +0000905
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000906
Fred Drakeefd146c1999-02-15 15:30:45 +0000907\chapter{Utilities \label{utilities}}
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000908
909The functions in this chapter perform various utility tasks, such as
Fred Drakeb0a78731998-01-13 18:51:10 +0000910parsing function arguments and constructing Python values from \C{}
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000911values.
912
Fred Drakeefd146c1999-02-15 15:30:45 +0000913\section{OS Utilities \label{os}}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000914
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000915\begin{cfuncdesc}{int}{Py_FdIsInteractive}{FILE *fp, char *filename}
Fred Drakee058b4f1998-02-16 06:15:35 +0000916Return true (nonzero) if the standard I/O file \var{fp} with name
917\var{filename} is deemed interactive. This is the case for files for
918which \samp{isatty(fileno(\var{fp}))} is true. If the global flag
Fred Drakef8830d11998-04-23 14:06:01 +0000919\cdata{Py_InteractiveFlag} is true, this function also returns true if
Fred Drakee058b4f1998-02-16 06:15:35 +0000920the \var{name} pointer is \NULL{} or if the name is equal to one of
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000921the strings \code{"<stdin>"} or \code{"???"}.
922\end{cfuncdesc}
923
924\begin{cfuncdesc}{long}{PyOS_GetLastModificationTime}{char *filename}
Fred Drakee058b4f1998-02-16 06:15:35 +0000925Return the time of last modification of the file \var{filename}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000926The result is encoded in the same way as the timestamp returned by
Fred Drakee058b4f1998-02-16 06:15:35 +0000927the standard \C{} library function \cfunction{time()}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000928\end{cfuncdesc}
929
930
Fred Drakeefd146c1999-02-15 15:30:45 +0000931\section{Process Control \label{processControl}}
Fred Drakee5bf8b21998-02-12 21:22:28 +0000932
933\begin{cfuncdesc}{void}{Py_FatalError}{char *message}
934Print a fatal error message and kill the process. No cleanup is
935performed. This function should only be invoked when a condition is
936detected that would make it dangerous to continue using the Python
937interpreter; e.g., when the object administration appears to be
Fred Drakee058b4f1998-02-16 06:15:35 +0000938corrupted. On \UNIX{}, the standard \C{} library function
939\cfunction{abort()} is called which will attempt to produce a
940\file{core} file.
Fred Drakee5bf8b21998-02-12 21:22:28 +0000941\end{cfuncdesc}
942
943\begin{cfuncdesc}{void}{Py_Exit}{int status}
Fred Drakee058b4f1998-02-16 06:15:35 +0000944Exit the current process. This calls \cfunction{Py_Finalize()} and
945then calls the standard \C{} library function
946\code{exit(\var{status})}.
Fred Drakee5bf8b21998-02-12 21:22:28 +0000947\end{cfuncdesc}
948
949\begin{cfuncdesc}{int}{Py_AtExit}{void (*func) ()}
950Register a cleanup function to be called by \cfunction{Py_Finalize()}.
951The cleanup function will be called with no arguments and should
952return no value. At most 32 cleanup functions can be registered.
953When the registration is successful, \cfunction{Py_AtExit()} returns
954\code{0}; on failure, it returns \code{-1}. The cleanup function
955registered last is called first. Each cleanup function will be called
956at most once. Since Python's internal finallization will have
957completed before the cleanup function, no Python APIs should be called
958by \var{func}.
959\end{cfuncdesc}
960
961
Fred Drakeefd146c1999-02-15 15:30:45 +0000962\section{Importing Modules \label{importing}}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000963
Fred Drakec6fa34e1998-04-02 06:47:24 +0000964\begin{cfuncdesc}{PyObject*}{PyImport_ImportModule}{char *name}
Fred Drakee058b4f1998-02-16 06:15:35 +0000965This is a simplified interface to \cfunction{PyImport_ImportModuleEx()}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000966below, leaving the \var{globals} and \var{locals} arguments set to
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000967\NULL{}. When the \var{name} argument contains a dot (i.e., when
Guido van Rossum42cefd01997-10-05 15:27:29 +0000968it specifies a submodule of a package), the \var{fromlist} argument is
969set to the list \code{['*']} so that the return value is the named
970module rather than the top-level package containing it as would
971otherwise be the case. (Unfortunately, this has an additional side
972effect when \var{name} in fact specifies a subpackage instead of a
973submodule: the submodules specified in the package's \code{__all__}
974variable are loaded.) Return a new reference to the imported module,
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000975or \NULL{} with an exception set on failure (the module may still
Fred Drakec6fa34e1998-04-02 06:47:24 +0000976be created in this case --- examine \code{sys.modules} to find out).
Guido van Rossum42cefd01997-10-05 15:27:29 +0000977\end{cfuncdesc}
978
Fred Drakec6fa34e1998-04-02 06:47:24 +0000979\begin{cfuncdesc}{PyObject*}{PyImport_ImportModuleEx}{char *name, PyObject *globals, PyObject *locals, PyObject *fromlist}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000980Import a module. This is best described by referring to the built-in
Fred Drake53fb7721998-02-16 06:23:20 +0000981Python function \function{__import__()}\bifuncindex{__import__}, as
982the standard \function{__import__()} function calls this function
983directly.
Guido van Rossum42cefd01997-10-05 15:27:29 +0000984
Guido van Rossum42cefd01997-10-05 15:27:29 +0000985The return value is a new reference to the imported module or
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000986top-level package, or \NULL{} with an exception set on failure
Guido van Rossumc44d3d61997-10-06 05:10:47 +0000987(the module may still be created in this case). Like for
Fred Drakee058b4f1998-02-16 06:15:35 +0000988\function{__import__()}, the return value when a submodule of a
989package was requested is normally the top-level package, unless a
990non-empty \var{fromlist} was given.
Guido van Rossum42cefd01997-10-05 15:27:29 +0000991\end{cfuncdesc}
992
Fred Drakec6fa34e1998-04-02 06:47:24 +0000993\begin{cfuncdesc}{PyObject*}{PyImport_Import}{PyObject *name}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000994This is a higher-level interface that calls the current ``import hook
Fred Drakee058b4f1998-02-16 06:15:35 +0000995function''. It invokes the \function{__import__()} function from the
Guido van Rossum42cefd01997-10-05 15:27:29 +0000996\code{__builtins__} of the current globals. This means that the
997import is done using whatever import hooks are installed in the
Fred Drake4de05a91998-02-16 14:25:26 +0000998current environment, e.g. by \module{rexec}\refstmodindex{rexec} or
999\module{ihooks}\refstmodindex{ihooks}.
Guido van Rossum42cefd01997-10-05 15:27:29 +00001000\end{cfuncdesc}
1001
Fred Drakec6fa34e1998-04-02 06:47:24 +00001002\begin{cfuncdesc}{PyObject*}{PyImport_ReloadModule}{PyObject *m}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001003Reload a module. This is best described by referring to the built-in
Fred Drake53fb7721998-02-16 06:23:20 +00001004Python function \function{reload()}\bifuncindex{reload}, as the standard
Fred Drakee058b4f1998-02-16 06:15:35 +00001005\function{reload()} function calls this function directly. Return a
1006new reference to the reloaded module, or \NULL{} with an exception set
1007on failure (the module still exists in this case).
Guido van Rossum42cefd01997-10-05 15:27:29 +00001008\end{cfuncdesc}
1009
Fred Drakec6fa34e1998-04-02 06:47:24 +00001010\begin{cfuncdesc}{PyObject*}{PyImport_AddModule}{char *name}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001011Return the module object corresponding to a module name. The
1012\var{name} argument may be of the form \code{package.module}). First
1013check the modules dictionary if there's one there, and if not, create
1014a new one and insert in in the modules dictionary. Because the former
1015action is most common, this does not return a new reference, and you
Guido van Rossuma096a2e1998-11-02 17:02:42 +00001016do not own the returned reference.
1017Warning: this function does not load or import the module; if the
1018module wasn't already loaded, you will get an empty module object.
1019Use \cfunction{PyImport_ImportModule()} or one of its variants to
1020import a module.
1021Return \NULL{} with an
Fred Drakef8830d11998-04-23 14:06:01 +00001022exception set on failure. \strong{Note:} this function returns
Guido van Rossum44475131998-04-21 15:30:01 +00001023a ``borrowed'' reference.
Guido van Rossum42cefd01997-10-05 15:27:29 +00001024\end{cfuncdesc}
1025
Fred Drakec6fa34e1998-04-02 06:47:24 +00001026\begin{cfuncdesc}{PyObject*}{PyImport_ExecCodeModule}{char *name, PyObject *co}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001027Given a module name (possibly of the form \code{package.module}) and a
1028code object read from a Python bytecode file or obtained from the
Fred Drake53fb7721998-02-16 06:23:20 +00001029built-in function \function{compile()}\bifuncindex{compile}, load the
1030module. Return a new reference to the module object, or \NULL{} with
1031an exception set if an error occurred (the module may still be created
1032in this case). (This function would reload the module if it was
1033already imported.)
Guido van Rossum42cefd01997-10-05 15:27:29 +00001034\end{cfuncdesc}
1035
1036\begin{cfuncdesc}{long}{PyImport_GetMagicNumber}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00001037Return the magic number for Python bytecode files (a.k.a. \file{.pyc}
1038and \file{.pyo} files). The magic number should be present in the
Guido van Rossum42cefd01997-10-05 15:27:29 +00001039first four bytes of the bytecode file, in little-endian byte order.
1040\end{cfuncdesc}
1041
Fred Drakec6fa34e1998-04-02 06:47:24 +00001042\begin{cfuncdesc}{PyObject*}{PyImport_GetModuleDict}{}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001043Return the dictionary used for the module administration
1044(a.k.a. \code{sys.modules}). Note that this is a per-interpreter
1045variable.
1046\end{cfuncdesc}
1047
1048\begin{cfuncdesc}{void}{_PyImport_Init}{}
1049Initialize the import mechanism. For internal use only.
1050\end{cfuncdesc}
1051
1052\begin{cfuncdesc}{void}{PyImport_Cleanup}{}
1053Empty the module table. For internal use only.
1054\end{cfuncdesc}
1055
1056\begin{cfuncdesc}{void}{_PyImport_Fini}{}
1057Finalize the import mechanism. For internal use only.
1058\end{cfuncdesc}
1059
Fred Drakec6fa34e1998-04-02 06:47:24 +00001060\begin{cfuncdesc}{PyObject*}{_PyImport_FindExtension}{char *, char *}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001061For internal use only.
Guido van Rossum5b8a5231997-12-30 04:38:44 +00001062\end{cfuncdesc}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001063
Fred Drakec6fa34e1998-04-02 06:47:24 +00001064\begin{cfuncdesc}{PyObject*}{_PyImport_FixupExtension}{char *, char *}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001065For internal use only.
Guido van Rossum5b8a5231997-12-30 04:38:44 +00001066\end{cfuncdesc}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001067
1068\begin{cfuncdesc}{int}{PyImport_ImportFrozenModule}{char *}
1069Load a frozen module. Return \code{1} for success, \code{0} if the
1070module is not found, and \code{-1} with an exception set if the
1071initialization failed. To access the imported module on a successful
Fred Drakee058b4f1998-02-16 06:15:35 +00001072load, use \cfunction{PyImport_ImportModule()}.
1073(Note the misnomer --- this function would reload the module if it was
Guido van Rossum42cefd01997-10-05 15:27:29 +00001074already imported.)
1075\end{cfuncdesc}
1076
1077\begin{ctypedesc}{struct _frozen}
1078This is the structure type definition for frozen module descriptors,
Fred Drakec6fa34e1998-04-02 06:47:24 +00001079as generated by the \program{freeze}\index{freeze utility} utility
1080(see \file{Tools/freeze/} in the Python source distribution). Its
1081definition is:
1082
Guido van Rossum9faf4c51997-10-07 14:38:54 +00001083\begin{verbatim}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001084struct _frozen {
Fred Drake36fbe761997-10-13 18:18:33 +00001085 char *name;
1086 unsigned char *code;
1087 int size;
Guido van Rossum42cefd01997-10-05 15:27:29 +00001088};
Guido van Rossum9faf4c51997-10-07 14:38:54 +00001089\end{verbatim}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001090\end{ctypedesc}
1091
Fred Drakec6fa34e1998-04-02 06:47:24 +00001092\begin{cvardesc}{struct _frozen*}{PyImport_FrozenModules}
Fred Drakef8830d11998-04-23 14:06:01 +00001093This pointer is initialized to point to an array of \ctype{struct
Guido van Rossum580aa8d1997-11-25 15:34:51 +00001094_frozen} records, terminated by one whose members are all \NULL{}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001095or zero. When a frozen module is imported, it is searched in this
Fred Drakec6fa34e1998-04-02 06:47:24 +00001096table. Third-party code could play tricks with this to provide a
Guido van Rossum42cefd01997-10-05 15:27:29 +00001097dynamically created collection of frozen modules.
1098\end{cvardesc}
1099
1100
Fred Drakeefd146c1999-02-15 15:30:45 +00001101\chapter{Abstract Objects Layer \label{abstract}}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001102
1103The functions in this chapter interact with Python objects regardless
1104of their type, or with wide classes of object types (e.g. all
1105numerical types, or all sequence types). When used on object types
1106for which they do not apply, they will flag a Python exception.
1107
Fred Drakeefd146c1999-02-15 15:30:45 +00001108\section{Object Protocol \label{object}}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001109
1110\begin{cfuncdesc}{int}{PyObject_Print}{PyObject *o, FILE *fp, int flags}
Fred Drakee058b4f1998-02-16 06:15:35 +00001111Print an object \var{o}, on file \var{fp}. Returns \code{-1} on error
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001112The flags argument is used to enable certain printing
Fred Drakee058b4f1998-02-16 06:15:35 +00001113options. The only option currently supported is
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001114\constant{Py_PRINT_RAW}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001115\end{cfuncdesc}
1116
1117\begin{cfuncdesc}{int}{PyObject_HasAttrString}{PyObject *o, char *attr_name}
Fred Drakee058b4f1998-02-16 06:15:35 +00001118Returns \code{1} if \var{o} has the attribute \var{attr_name}, and
1119\code{0} otherwise. This is equivalent to the Python expression
1120\samp{hasattr(\var{o}, \var{attr_name})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001121This function always succeeds.
1122\end{cfuncdesc}
1123
1124\begin{cfuncdesc}{PyObject*}{PyObject_GetAttrString}{PyObject *o, char *attr_name}
Fred Drakee058b4f1998-02-16 06:15:35 +00001125Retrieve an attribute named \var{attr_name} from object \var{o}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001126Returns the attribute value on success, or \NULL{} on failure.
Fred Drakee058b4f1998-02-16 06:15:35 +00001127This is the equivalent of the Python expression
1128\samp{\var{o}.\var{attr_name}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001129\end{cfuncdesc}
1130
1131
1132\begin{cfuncdesc}{int}{PyObject_HasAttr}{PyObject *o, PyObject *attr_name}
Fred Drakee058b4f1998-02-16 06:15:35 +00001133Returns \code{1} if \var{o} has the attribute \var{attr_name}, and
1134\code{0} otherwise. This is equivalent to the Python expression
1135\samp{hasattr(\var{o}, \var{attr_name})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001136This function always succeeds.
1137\end{cfuncdesc}
1138
1139
1140\begin{cfuncdesc}{PyObject*}{PyObject_GetAttr}{PyObject *o, PyObject *attr_name}
Fred Drakee058b4f1998-02-16 06:15:35 +00001141Retrieve an attribute named \var{attr_name} from object \var{o}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001142Returns the attribute value on success, or \NULL{} on failure.
Fred Drakee058b4f1998-02-16 06:15:35 +00001143This is the equivalent of the Python expression
1144\samp{\var{o}.\var{attr_name}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001145\end{cfuncdesc}
1146
1147
1148\begin{cfuncdesc}{int}{PyObject_SetAttrString}{PyObject *o, char *attr_name, PyObject *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001149Set the value of the attribute named \var{attr_name}, for object
1150\var{o}, to the value \var{v}. Returns \code{-1} on failure. This is
1151the equivalent of the Python statement \samp{\var{o}.\var{attr_name} =
1152\var{v}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001153\end{cfuncdesc}
1154
1155
1156\begin{cfuncdesc}{int}{PyObject_SetAttr}{PyObject *o, PyObject *attr_name, PyObject *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001157Set the value of the attribute named \var{attr_name}, for
1158object \var{o},
1159to the value \var{v}. Returns \code{-1} on failure. This is
1160the equivalent of the Python statement \samp{\var{o}.\var{attr_name} =
1161\var{v}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001162\end{cfuncdesc}
1163
1164
1165\begin{cfuncdesc}{int}{PyObject_DelAttrString}{PyObject *o, char *attr_name}
Fred Drakee058b4f1998-02-16 06:15:35 +00001166Delete attribute named \var{attr_name}, for object \var{o}. Returns
1167\code{-1} on failure. This is the equivalent of the Python
1168statement: \samp{del \var{o}.\var{attr_name}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001169\end{cfuncdesc}
1170
1171
1172\begin{cfuncdesc}{int}{PyObject_DelAttr}{PyObject *o, PyObject *attr_name}
Fred Drakee058b4f1998-02-16 06:15:35 +00001173Delete attribute named \var{attr_name}, for object \var{o}. Returns
1174\code{-1} on failure. This is the equivalent of the Python
1175statement \samp{del \var{o}.\var{attr_name}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001176\end{cfuncdesc}
1177
1178
1179\begin{cfuncdesc}{int}{PyObject_Cmp}{PyObject *o1, PyObject *o2, int *result}
Fred Drakee058b4f1998-02-16 06:15:35 +00001180Compare the values of \var{o1} and \var{o2} using a routine provided
1181by \var{o1}, if one exists, otherwise with a routine provided by
1182\var{o2}. The result of the comparison is returned in \var{result}.
1183Returns \code{-1} on failure. This is the equivalent of the Python
1184statement \samp{\var{result} = cmp(\var{o1}, \var{o2})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001185\end{cfuncdesc}
1186
1187
1188\begin{cfuncdesc}{int}{PyObject_Compare}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001189Compare the values of \var{o1} and \var{o2} using a routine provided
1190by \var{o1}, if one exists, otherwise with a routine provided by
1191\var{o2}. Returns the result of the comparison on success. On error,
1192the value returned is undefined; use \cfunction{PyErr_Occurred()} to
1193detect an error. This is equivalent to the
1194Python expression \samp{cmp(\var{o1}, \var{o2})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001195\end{cfuncdesc}
1196
1197
1198\begin{cfuncdesc}{PyObject*}{PyObject_Repr}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001199Compute the string representation of object, \var{o}. Returns the
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001200string representation on success, \NULL{} on failure. This is
Fred Drakee058b4f1998-02-16 06:15:35 +00001201the equivalent of the Python expression \samp{repr(\var{o})}.
1202Called by the \function{repr()}\bifuncindex{repr} built-in function
1203and by reverse quotes.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001204\end{cfuncdesc}
1205
1206
1207\begin{cfuncdesc}{PyObject*}{PyObject_Str}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001208Compute the string representation of object \var{o}. Returns the
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001209string representation on success, \NULL{} on failure. This is
Fred Drakee058b4f1998-02-16 06:15:35 +00001210the equivalent of the Python expression \samp{str(\var{o})}.
1211Called by the \function{str()}\bifuncindex{str} built-in function and
1212by the \keyword{print} statement.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001213\end{cfuncdesc}
1214
1215
1216\begin{cfuncdesc}{int}{PyCallable_Check}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001217Determine if the object \var{o}, is callable. Return \code{1} if the
1218object is callable and \code{0} otherwise.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001219This function always succeeds.
1220\end{cfuncdesc}
1221
1222
1223\begin{cfuncdesc}{PyObject*}{PyObject_CallObject}{PyObject *callable_object, PyObject *args}
Fred Drakee058b4f1998-02-16 06:15:35 +00001224Call a callable Python object \var{callable_object}, with
1225arguments given by the tuple \var{args}. If no arguments are
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001226needed, then args may be \NULL{}. Returns the result of the
1227call on success, or \NULL{} on failure. This is the equivalent
Fred Drakee058b4f1998-02-16 06:15:35 +00001228of the Python expression \samp{apply(\var{o}, \var{args})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001229\end{cfuncdesc}
1230
1231\begin{cfuncdesc}{PyObject*}{PyObject_CallFunction}{PyObject *callable_object, char *format, ...}
Fred Drakee058b4f1998-02-16 06:15:35 +00001232Call a callable Python object \var{callable_object}, with a
Fred Drakeb0a78731998-01-13 18:51:10 +00001233variable number of \C{} arguments. The \C{} arguments are described
Fred Drakee058b4f1998-02-16 06:15:35 +00001234using a \cfunction{Py_BuildValue()} style format string. The format may
1235be \NULL{}, indicating that no arguments are provided. Returns the
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001236result of the call on success, or \NULL{} on failure. This is
Fred Drakee058b4f1998-02-16 06:15:35 +00001237the equivalent of the Python expression \samp{apply(\var{o},
1238\var{args})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001239\end{cfuncdesc}
1240
1241
1242\begin{cfuncdesc}{PyObject*}{PyObject_CallMethod}{PyObject *o, char *m, char *format, ...}
Fred Drakee058b4f1998-02-16 06:15:35 +00001243Call the method named \var{m} of object \var{o} with a variable number
1244of C arguments. The \C{} arguments are described by a
1245\cfunction{Py_BuildValue()} format string. The format may be \NULL{},
1246indicating that no arguments are provided. Returns the result of the
1247call on success, or \NULL{} on failure. This is the equivalent of the
1248Python expression \samp{\var{o}.\var{method}(\var{args})}.
1249Note that Special method names, such as \method{__add__()},
1250\method{__getitem__()}, and so on are not supported. The specific
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001251abstract-object routines for these must be used.
1252\end{cfuncdesc}
1253
1254
1255\begin{cfuncdesc}{int}{PyObject_Hash}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001256Compute and return the hash value of an object \var{o}. On
1257failure, return \code{-1}. This is the equivalent of the Python
1258expression \samp{hash(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001259\end{cfuncdesc}
1260
1261
1262\begin{cfuncdesc}{int}{PyObject_IsTrue}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001263Returns \code{1} if the object \var{o} is considered to be true, and
1264\code{0} otherwise. This is equivalent to the Python expression
1265\samp{not not \var{o}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001266This function always succeeds.
1267\end{cfuncdesc}
1268
1269
1270\begin{cfuncdesc}{PyObject*}{PyObject_Type}{PyObject *o}
1271On success, returns a type object corresponding to the object
Fred Drakee058b4f1998-02-16 06:15:35 +00001272type of object \var{o}. On failure, returns \NULL{}. This is
1273equivalent to the Python expression \samp{type(\var{o})}.
Fred Drake53fb7721998-02-16 06:23:20 +00001274\bifuncindex{type}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001275\end{cfuncdesc}
1276
1277\begin{cfuncdesc}{int}{PyObject_Length}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001278Return the length of object \var{o}. If the object \var{o} provides
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001279both sequence and mapping protocols, the sequence length is
Fred Drakee058b4f1998-02-16 06:15:35 +00001280returned. On error, \code{-1} is returned. This is the equivalent
1281to the Python expression \samp{len(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001282\end{cfuncdesc}
1283
1284
1285\begin{cfuncdesc}{PyObject*}{PyObject_GetItem}{PyObject *o, PyObject *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001286Return element of \var{o} corresponding to the object \var{key} or
1287\NULL{} on failure. This is the equivalent of the Python expression
1288\samp{\var{o}[\var{key}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001289\end{cfuncdesc}
1290
1291
1292\begin{cfuncdesc}{int}{PyObject_SetItem}{PyObject *o, PyObject *key, PyObject *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001293Map the object \var{key} to the value \var{v}.
1294Returns \code{-1} on failure. This is the equivalent
1295of the Python statement \samp{\var{o}[\var{key}] = \var{v}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001296\end{cfuncdesc}
1297
1298
Guido van Rossumd1dbf631999-01-22 20:10:49 +00001299\begin{cfuncdesc}{int}{PyObject_DelItem}{PyObject *o, PyObject *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001300Delete the mapping for \var{key} from \var{o}. Returns \code{-1} on
1301failure. This is the equivalent of the Python statement \samp{del
1302\var{o}[\var{key}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001303\end{cfuncdesc}
1304
1305
Fred Drakeefd146c1999-02-15 15:30:45 +00001306\section{Number Protocol \label{number}}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001307
1308\begin{cfuncdesc}{int}{PyNumber_Check}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001309Returns \code{1} if the object \var{o} provides numeric protocols, and
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001310false otherwise.
1311This function always succeeds.
1312\end{cfuncdesc}
1313
1314
1315\begin{cfuncdesc}{PyObject*}{PyNumber_Add}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001316Returns the result of adding \var{o1} and \var{o2}, or \NULL{} on
1317failure. This is the equivalent of the Python expression
1318\samp{\var{o1} + \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001319\end{cfuncdesc}
1320
1321
1322\begin{cfuncdesc}{PyObject*}{PyNumber_Subtract}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001323Returns the result of subtracting \var{o2} from \var{o1}, or \NULL{}
1324on failure. This is the equivalent of the Python expression
1325\samp{\var{o1} - \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001326\end{cfuncdesc}
1327
1328
1329\begin{cfuncdesc}{PyObject*}{PyNumber_Multiply}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001330Returns the result of multiplying \var{o1} and \var{o2}, or \NULL{} on
1331failure. This is the equivalent of the Python expression
1332\samp{\var{o1} * \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001333\end{cfuncdesc}
1334
1335
1336\begin{cfuncdesc}{PyObject*}{PyNumber_Divide}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001337Returns the result of dividing \var{o1} by \var{o2}, or \NULL{} on
1338failure.
1339This is the equivalent of the Python expression \samp{\var{o1} /
1340\var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001341\end{cfuncdesc}
1342
1343
1344\begin{cfuncdesc}{PyObject*}{PyNumber_Remainder}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001345Returns the remainder of dividing \var{o1} by \var{o2}, or \NULL{} on
1346failure. This is the equivalent of the Python expression
1347\samp{\var{o1} \% \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001348\end{cfuncdesc}
1349
1350
1351\begin{cfuncdesc}{PyObject*}{PyNumber_Divmod}{PyObject *o1, PyObject *o2}
Fred Drake53fb7721998-02-16 06:23:20 +00001352See the built-in function \function{divmod()}\bifuncindex{divmod}.
1353Returns \NULL{} on failure. This is the equivalent of the Python
1354expression \samp{divmod(\var{o1}, \var{o2})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001355\end{cfuncdesc}
1356
1357
1358\begin{cfuncdesc}{PyObject*}{PyNumber_Power}{PyObject *o1, PyObject *o2, PyObject *o3}
Fred Drake53fb7721998-02-16 06:23:20 +00001359See the built-in function \function{pow()}\bifuncindex{pow}. Returns
1360\NULL{} on failure. This is the equivalent of the Python expression
Fred Drakee058b4f1998-02-16 06:15:35 +00001361\samp{pow(\var{o1}, \var{o2}, \var{o3})}, where \var{o3} is optional.
Fred Drakef8830d11998-04-23 14:06:01 +00001362If \var{o3} is to be ignored, pass \cdata{Py_None} in its place.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001363\end{cfuncdesc}
1364
1365
1366\begin{cfuncdesc}{PyObject*}{PyNumber_Negative}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001367Returns the negation of \var{o} on success, or \NULL{} on failure.
1368This is the equivalent of the Python expression \samp{-\var{o}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001369\end{cfuncdesc}
1370
1371
1372\begin{cfuncdesc}{PyObject*}{PyNumber_Positive}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001373Returns \var{o} on success, or \NULL{} on failure.
1374This is the equivalent of the Python expression \samp{+\var{o}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001375\end{cfuncdesc}
1376
1377
1378\begin{cfuncdesc}{PyObject*}{PyNumber_Absolute}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001379Returns the absolute value of \var{o}, or \NULL{} on failure. This is
1380the equivalent of the Python expression \samp{abs(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001381\end{cfuncdesc}
1382
1383
1384\begin{cfuncdesc}{PyObject*}{PyNumber_Invert}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001385Returns the bitwise negation of \var{o} on success, or \NULL{} on
1386failure. This is the equivalent of the Python expression
1387\samp{\~\var{o}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001388\end{cfuncdesc}
1389
1390
1391\begin{cfuncdesc}{PyObject*}{PyNumber_Lshift}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001392Returns the result of left shifting \var{o1} by \var{o2} on success,
1393or \NULL{} on failure. This is the equivalent of the Python
1394expression \samp{\var{o1} << \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001395\end{cfuncdesc}
1396
1397
1398\begin{cfuncdesc}{PyObject*}{PyNumber_Rshift}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001399Returns the result of right shifting \var{o1} by \var{o2} on success,
1400or \NULL{} on failure. This is the equivalent of the Python
1401expression \samp{\var{o1} >> \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001402\end{cfuncdesc}
1403
1404
1405\begin{cfuncdesc}{PyObject*}{PyNumber_And}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001406Returns the result of ``anding'' \var{o2} and \var{o2} on success and
1407\NULL{} on failure. This is the equivalent of the Python
1408expression \samp{\var{o1} and \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001409\end{cfuncdesc}
1410
1411
1412\begin{cfuncdesc}{PyObject*}{PyNumber_Xor}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001413Returns the bitwise exclusive or of \var{o1} by \var{o2} on success,
1414or \NULL{} on failure. This is the equivalent of the Python
1415expression \samp{\var{o1} \^{ }\var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001416\end{cfuncdesc}
1417
1418\begin{cfuncdesc}{PyObject*}{PyNumber_Or}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001419Returns the result of \var{o1} and \var{o2} on success, or \NULL{} on
1420failure. This is the equivalent of the Python expression
1421\samp{\var{o1} or \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001422\end{cfuncdesc}
1423
1424
Fred Drakee058b4f1998-02-16 06:15:35 +00001425\begin{cfuncdesc}{PyObject*}{PyNumber_Coerce}{PyObject **p1, PyObject **p2}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001426This function takes the addresses of two variables of type
Fred Drakef8830d11998-04-23 14:06:01 +00001427\ctype{PyObject*}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001428
Fred Drakee058b4f1998-02-16 06:15:35 +00001429If the objects pointed to by \code{*\var{p1}} and \code{*\var{p2}}
1430have the same type, increment their reference count and return
1431\code{0} (success). If the objects can be converted to a common
1432numeric type, replace \code{*p1} and \code{*p2} by their converted
1433value (with 'new' reference counts), and return \code{0}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001434If no conversion is possible, or if some other error occurs,
Fred Drakee058b4f1998-02-16 06:15:35 +00001435return \code{-1} (failure) and don't increment the reference counts.
1436The call \code{PyNumber_Coerce(\&o1, \&o2)} is equivalent to the
1437Python statement \samp{\var{o1}, \var{o2} = coerce(\var{o1},
1438\var{o2})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001439\end{cfuncdesc}
1440
1441
1442\begin{cfuncdesc}{PyObject*}{PyNumber_Int}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001443Returns the \var{o} converted to an integer object on success, or
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001444\NULL{} on failure. This is the equivalent of the Python
Fred Drakee058b4f1998-02-16 06:15:35 +00001445expression \samp{int(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001446\end{cfuncdesc}
1447
1448
1449\begin{cfuncdesc}{PyObject*}{PyNumber_Long}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001450Returns the \var{o} converted to a long integer object on success,
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001451or \NULL{} on failure. This is the equivalent of the Python
Fred Drakee058b4f1998-02-16 06:15:35 +00001452expression \samp{long(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001453\end{cfuncdesc}
1454
1455
1456\begin{cfuncdesc}{PyObject*}{PyNumber_Float}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001457Returns the \var{o} converted to a float object on success, or \NULL{}
1458on failure. This is the equivalent of the Python expression
1459\samp{float(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001460\end{cfuncdesc}
1461
1462
Fred Drakeefd146c1999-02-15 15:30:45 +00001463\section{Sequence Protocol \label{sequence}}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001464
1465\begin{cfuncdesc}{int}{PySequence_Check}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001466Return \code{1} if the object provides sequence protocol, and \code{0}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001467otherwise.
1468This function always succeeds.
1469\end{cfuncdesc}
1470
1471
1472\begin{cfuncdesc}{PyObject*}{PySequence_Concat}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001473Return the concatenation of \var{o1} and \var{o2} on success, and \NULL{} on
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001474failure. This is the equivalent of the Python
Fred Drakee058b4f1998-02-16 06:15:35 +00001475expression \samp{\var{o1} + \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001476\end{cfuncdesc}
1477
1478
1479\begin{cfuncdesc}{PyObject*}{PySequence_Repeat}{PyObject *o, int count}
Fred Drakee058b4f1998-02-16 06:15:35 +00001480Return the result of repeating sequence object \var{o} \var{count}
1481times, or \NULL{} on failure. This is the equivalent of the Python
1482expression \samp{\var{o} * \var{count}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001483\end{cfuncdesc}
1484
1485
1486\begin{cfuncdesc}{PyObject*}{PySequence_GetItem}{PyObject *o, int i}
Fred Drakee058b4f1998-02-16 06:15:35 +00001487Return the \var{i}th element of \var{o}, or \NULL{} on failure. This
1488is the equivalent of the Python expression \samp{\var{o}[\var{i}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001489\end{cfuncdesc}
1490
1491
1492\begin{cfuncdesc}{PyObject*}{PySequence_GetSlice}{PyObject *o, int i1, int i2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001493Return the slice of sequence object \var{o} between \var{i1} and
1494\var{i2}, or \NULL{} on failure. This is the equivalent of the Python
1495expression \samp{\var{o}[\var{i1}:\var{i2}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001496\end{cfuncdesc}
1497
1498
1499\begin{cfuncdesc}{int}{PySequence_SetItem}{PyObject *o, int i, PyObject *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001500Assign object \var{v} to the \var{i}th element of \var{o}.
1501Returns \code{-1} on failure. This is the equivalent of the Python
1502statement \samp{\var{o}[\var{i}] = \var{v}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001503\end{cfuncdesc}
1504
1505\begin{cfuncdesc}{int}{PySequence_DelItem}{PyObject *o, int i}
Fred Drakee058b4f1998-02-16 06:15:35 +00001506Delete the \var{i}th element of object \var{v}. Returns
1507\code{-1} on failure. This is the equivalent of the Python
1508statement \samp{del \var{o}[\var{i}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001509\end{cfuncdesc}
1510
1511\begin{cfuncdesc}{int}{PySequence_SetSlice}{PyObject *o, int i1, int i2, PyObject *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001512Assign the sequence object \var{v} to the slice in sequence
1513object \var{o} from \var{i1} to \var{i2}. This is the equivalent of
1514the Python statement \samp{\var{o}[\var{i1}:\var{i2}] = \var{v}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001515\end{cfuncdesc}
1516
1517\begin{cfuncdesc}{int}{PySequence_DelSlice}{PyObject *o, int i1, int i2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001518Delete the slice in sequence object \var{o} from \var{i1} to \var{i2}.
1519Returns \code{-1} on failure. This is the equivalent of the Python
1520statement \samp{del \var{o}[\var{i1}:\var{i2}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001521\end{cfuncdesc}
1522
1523\begin{cfuncdesc}{PyObject*}{PySequence_Tuple}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001524Returns the \var{o} as a tuple on success, and \NULL{} on failure.
1525This is equivalent to the Python expression \code{tuple(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001526\end{cfuncdesc}
1527
1528\begin{cfuncdesc}{int}{PySequence_Count}{PyObject *o, PyObject *value}
Fred Drakee058b4f1998-02-16 06:15:35 +00001529Return the number of occurrences of \var{value} in \var{o}, that is,
1530return the number of keys for which \code{\var{o}[\var{key}] ==
1531\var{value}}. On failure, return \code{-1}. This is equivalent to
1532the Python expression \samp{\var{o}.count(\var{value})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001533\end{cfuncdesc}
1534
1535\begin{cfuncdesc}{int}{PySequence_In}{PyObject *o, PyObject *value}
Fred Drakee058b4f1998-02-16 06:15:35 +00001536Determine if \var{o} contains \var{value}. If an item in \var{o} is
1537equal to \var{value}, return \code{1}, otherwise return \code{0}. On
1538error, return \code{-1}. This is equivalent to the Python expression
1539\samp{\var{value} in \var{o}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001540\end{cfuncdesc}
1541
1542\begin{cfuncdesc}{int}{PySequence_Index}{PyObject *o, PyObject *value}
Fred Drakee058b4f1998-02-16 06:15:35 +00001543Return the first index \var{i} for which \code{\var{o}[\var{i}] ==
1544\var{value}}. On error, return \code{-1}. This is equivalent to
1545the Python expression \samp{\var{o}.index(\var{value})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001546\end{cfuncdesc}
1547
Fred Drakef39ed671998-02-26 22:01:23 +00001548
Fred Drakeefd146c1999-02-15 15:30:45 +00001549\section{Mapping Protocol \label{mapping}}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001550
1551\begin{cfuncdesc}{int}{PyMapping_Check}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001552Return \code{1} if the object provides mapping protocol, and \code{0}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001553otherwise.
1554This function always succeeds.
1555\end{cfuncdesc}
1556
1557
1558\begin{cfuncdesc}{int}{PyMapping_Length}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001559Returns the number of keys in object \var{o} on success, and \code{-1}
1560on failure. For objects that do not provide sequence protocol,
1561this is equivalent to the Python expression \samp{len(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001562\end{cfuncdesc}
1563
1564
1565\begin{cfuncdesc}{int}{PyMapping_DelItemString}{PyObject *o, char *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001566Remove the mapping for object \var{key} from the object \var{o}.
1567Return \code{-1} on failure. This is equivalent to
1568the Python statement \samp{del \var{o}[\var{key}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001569\end{cfuncdesc}
1570
1571
1572\begin{cfuncdesc}{int}{PyMapping_DelItem}{PyObject *o, PyObject *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001573Remove the mapping for object \var{key} from the object \var{o}.
1574Return \code{-1} on failure. This is equivalent to
1575the Python statement \samp{del \var{o}[\var{key}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001576\end{cfuncdesc}
1577
1578
1579\begin{cfuncdesc}{int}{PyMapping_HasKeyString}{PyObject *o, char *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001580On success, return \code{1} if the mapping object has the key \var{key}
1581and \code{0} otherwise. This is equivalent to the Python expression
1582\samp{\var{o}.has_key(\var{key})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001583This function always succeeds.
1584\end{cfuncdesc}
1585
1586
1587\begin{cfuncdesc}{int}{PyMapping_HasKey}{PyObject *o, PyObject *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001588Return \code{1} if the mapping object has the key \var{key} and
1589\code{0} otherwise. This is equivalent to the Python expression
1590\samp{\var{o}.has_key(\var{key})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001591This function always succeeds.
1592\end{cfuncdesc}
1593
1594
1595\begin{cfuncdesc}{PyObject*}{PyMapping_Keys}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001596On success, return a list of the keys in object \var{o}. On
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001597failure, return \NULL{}. This is equivalent to the Python
Fred Drakee058b4f1998-02-16 06:15:35 +00001598expression \samp{\var{o}.keys()}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001599\end{cfuncdesc}
1600
1601
1602\begin{cfuncdesc}{PyObject*}{PyMapping_Values}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001603On success, return a list of the values in object \var{o}. On
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001604failure, return \NULL{}. This is equivalent to the Python
Fred Drakee058b4f1998-02-16 06:15:35 +00001605expression \samp{\var{o}.values()}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001606\end{cfuncdesc}
1607
1608
1609\begin{cfuncdesc}{PyObject*}{PyMapping_Items}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001610On success, return a list of the items in object \var{o}, where
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001611each item is a tuple containing a key-value pair. On
1612failure, return \NULL{}. This is equivalent to the Python
Fred Drakee058b4f1998-02-16 06:15:35 +00001613expression \samp{\var{o}.items()}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001614\end{cfuncdesc}
1615
1616\begin{cfuncdesc}{int}{PyMapping_Clear}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001617Make object \var{o} empty. Returns \code{1} on success and \code{0}
1618on failure. This is equivalent to the Python statement
1619\samp{for key in \var{o}.keys(): del \var{o}[key]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001620\end{cfuncdesc}
1621
1622
1623\begin{cfuncdesc}{PyObject*}{PyMapping_GetItemString}{PyObject *o, char *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001624Return element of \var{o} corresponding to the object \var{key} or
1625\NULL{} on failure. This is the equivalent of the Python expression
1626\samp{\var{o}[\var{key}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001627\end{cfuncdesc}
1628
Guido van Rossum0a0f11b1998-10-16 17:43:53 +00001629\begin{cfuncdesc}{int}{PyMapping_SetItemString}{PyObject *o, char *key, PyObject *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001630Map the object \var{key} to the value \var{v} in object \var{o}.
1631Returns \code{-1} on failure. This is the equivalent of the Python
1632statement \samp{\var{o}[\var{key}] = \var{v}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001633\end{cfuncdesc}
1634
1635
1636\section{Constructors}
1637
1638\begin{cfuncdesc}{PyObject*}{PyFile_FromString}{char *file_name, char *mode}
1639On success, returns a new file object that is opened on the
Fred Drakee058b4f1998-02-16 06:15:35 +00001640file given by \var{file_name}, with a file mode given by \var{mode},
1641where \var{mode} has the same semantics as the standard \C{} routine
1642\cfunction{fopen()}. On failure, return \code{-1}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001643\end{cfuncdesc}
1644
1645\begin{cfuncdesc}{PyObject*}{PyFile_FromFile}{FILE *fp, char *file_name, char *mode, int close_on_del}
Fred Drakee058b4f1998-02-16 06:15:35 +00001646Return a new file object for an already opened standard \C{} file
1647pointer, \var{fp}. A file name, \var{file_name}, and open mode,
1648\var{mode}, must be provided as well as a flag, \var{close_on_del},
1649that indicates whether the file is to be closed when the file object
1650is destroyed. On failure, return \code{-1}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001651\end{cfuncdesc}
1652
1653\begin{cfuncdesc}{PyObject*}{PyFloat_FromDouble}{double v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001654Returns a new float object with the value \var{v} on success, and
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001655\NULL{} on failure.
1656\end{cfuncdesc}
1657
1658\begin{cfuncdesc}{PyObject*}{PyInt_FromLong}{long v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001659Returns a new int object with the value \var{v} on success, and
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001660\NULL{} on failure.
1661\end{cfuncdesc}
1662
Fred Drakee058b4f1998-02-16 06:15:35 +00001663\begin{cfuncdesc}{PyObject*}{PyList_New}{int len}
1664Returns a new list of length \var{len} on success, and \NULL{} on
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001665failure.
1666\end{cfuncdesc}
1667
1668\begin{cfuncdesc}{PyObject*}{PyLong_FromLong}{long v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001669Returns a new long object with the value \var{v} on success, and
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001670\NULL{} on failure.
1671\end{cfuncdesc}
1672
1673\begin{cfuncdesc}{PyObject*}{PyLong_FromDouble}{double v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001674Returns a new long object with the value \var{v} on success, and
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001675\NULL{} on failure.
1676\end{cfuncdesc}
1677
1678\begin{cfuncdesc}{PyObject*}{PyDict_New}{}
1679Returns a new empty dictionary on success, and \NULL{} on
1680failure.
1681\end{cfuncdesc}
1682
1683\begin{cfuncdesc}{PyObject*}{PyString_FromString}{char *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001684Returns a new string object with the value \var{v} on success, and
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001685\NULL{} on failure.
1686\end{cfuncdesc}
1687
Fred Drakee058b4f1998-02-16 06:15:35 +00001688\begin{cfuncdesc}{PyObject*}{PyString_FromStringAndSize}{char *v, int len}
1689Returns a new string object with the value \var{v} and length
1690\var{len} on success, and \NULL{} on failure. If \var{v} is \NULL{},
1691the contents of the string are uninitialized.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001692\end{cfuncdesc}
1693
Fred Drakee058b4f1998-02-16 06:15:35 +00001694\begin{cfuncdesc}{PyObject*}{PyTuple_New}{int len}
1695Returns a new tuple of length \var{len} on success, and \NULL{} on
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001696failure.
1697\end{cfuncdesc}
1698
1699
Fred Drakeefd146c1999-02-15 15:30:45 +00001700\chapter{Concrete Objects Layer \label{concrete}}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001701
1702The functions in this chapter are specific to certain Python object
1703types. Passing them an object of the wrong type is not a good idea;
1704if you receive an object from a Python program and you are not sure
1705that it has the right type, you must perform a type check first;
1706e.g. to check that an object is a dictionary, use
Fred Drakee5bf8b21998-02-12 21:22:28 +00001707\cfunction{PyDict_Check()}. The chapter is structured like the
1708``family tree'' of Python object types.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001709
1710
Fred Drakeefd146c1999-02-15 15:30:45 +00001711\section{Fundamental Objects \label{fundamental}}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001712
Fred Drakee5bf8b21998-02-12 21:22:28 +00001713This section describes Python type objects and the singleton object
1714\code{None}.
1715
1716
Fred Drakeefd146c1999-02-15 15:30:45 +00001717\subsection{Type Objects \label{typeObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00001718
1719\begin{ctypedesc}{PyTypeObject}
1720
1721\end{ctypedesc}
1722
1723\begin{cvardesc}{PyObject *}{PyType_Type}
Fred Drakeefd146c1999-02-15 15:30:45 +00001724This is the type object for type objects; it is the same object as
1725\code{types.TypeType} in the Python layer.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001726\end{cvardesc}
1727
1728
Fred Drakeefd146c1999-02-15 15:30:45 +00001729\subsection{The None Object \label{noneObject}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00001730
1731\begin{cvardesc}{PyObject *}{Py_None}
Guido van Rossum44475131998-04-21 15:30:01 +00001732The Python \code{None} object, denoting lack of value. This object has
1733no methods.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001734\end{cvardesc}
1735
1736
Fred Drakeefd146c1999-02-15 15:30:45 +00001737\section{Sequence Objects \label{sequenceObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00001738
1739Generic operations on sequence objects were discussed in the previous
1740chapter; this section deals with the specific kinds of sequence
1741objects that are intrinsic to the Python language.
1742
1743
Fred Drakeefd146c1999-02-15 15:30:45 +00001744\subsection{String Objects \label{stringObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00001745
1746\begin{ctypedesc}{PyStringObject}
Fred Drakef8830d11998-04-23 14:06:01 +00001747This subtype of \ctype{PyObject} represents a Python string object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001748\end{ctypedesc}
1749
1750\begin{cvardesc}{PyTypeObject}{PyString_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00001751This instance of \ctype{PyTypeObject} represents the Python string type.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001752\end{cvardesc}
1753
1754\begin{cfuncdesc}{int}{PyString_Check}{PyObject *o}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001755Returns true if the object \var{o} is a string object.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001756\end{cfuncdesc}
1757
Fred Drakec6fa34e1998-04-02 06:47:24 +00001758\begin{cfuncdesc}{PyObject*}{PyString_FromStringAndSize}{const char *v,
1759 int len}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001760Returns a new string object with the value \var{v} and length
1761\var{len} on success, and \NULL{} on failure. If \var{v} is \NULL{},
1762the contents of the string are uninitialized.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001763\end{cfuncdesc}
1764
1765\begin{cfuncdesc}{PyObject*}{PyString_FromString}{const char *v}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001766Returns a new string object with the value \var{v} on success, and
1767\NULL{} on failure.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001768\end{cfuncdesc}
1769
1770\begin{cfuncdesc}{int}{PyString_Size}{PyObject *string}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001771Returns the length of the string in string object \var{string}.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001772\end{cfuncdesc}
1773
1774\begin{cfuncdesc}{char*}{PyString_AsString}{PyObject *string}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001775Resturns a \NULL{} terminated representation of the contents of \var{string}.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001776\end{cfuncdesc}
1777
1778\begin{cfuncdesc}{void}{PyString_Concat}{PyObject **string,
1779 PyObject *newpart}
Fred Drake66b989c1999-02-15 20:15:39 +00001780Creates a new string object in \var{*string} containing the
1781contents of \var{newpart} appended to \var{string}. The old value of
1782\var{string} have its reference count decremented. If the new string
1783cannot be created, the old reference to \var{string} will still be
1784discarded and the value of \var{*string} will be set to
1785\NULL{}; the appropriate exception will be set.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001786\end{cfuncdesc}
1787
1788\begin{cfuncdesc}{void}{PyString_ConcatAndDel}{PyObject **string,
1789 PyObject *newpart}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001790Creates a new string object in \var{*string} containing the contents
Guido van Rossum44475131998-04-21 15:30:01 +00001791of \var{newpart} appended to \var{string}. This version decrements
1792the reference count of \var{newpart}.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001793\end{cfuncdesc}
1794
1795\begin{cfuncdesc}{int}{_PyString_Resize}{PyObject **string, int newsize}
Guido van Rossum44475131998-04-21 15:30:01 +00001796A way to resize a string object even though it is ``immutable''.
1797Only use this to build up a brand new string object; don't use this if
1798the string may already be known in other parts of the code.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001799\end{cfuncdesc}
1800
1801\begin{cfuncdesc}{PyObject*}{PyString_Format}{PyObject *format,
1802 PyObject *args}
Guido van Rossum44475131998-04-21 15:30:01 +00001803Returns a new string object from \var{format} and \var{args}. Analogous
1804to \code{\var{format} \% \var{args}}. The \var{args} argument must be
1805a tuple.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001806\end{cfuncdesc}
1807
1808\begin{cfuncdesc}{void}{PyString_InternInPlace}{PyObject **string}
Guido van Rossum44475131998-04-21 15:30:01 +00001809Intern the argument \var{*string} in place. The argument must be the
1810address of a pointer variable pointing to a Python string object.
1811If there is an existing interned string that is the same as
1812\var{*string}, it sets \var{*string} to it (decrementing the reference
1813count of the old string object and incrementing the reference count of
1814the interned string object), otherwise it leaves \var{*string} alone
1815and interns it (incrementing its reference count). (Clarification:
1816even though there is a lot of talk about reference counts, think of
Fred Drakef8830d11998-04-23 14:06:01 +00001817this function as reference-count-neutral; you own the object after
1818the call if and only if you owned it before the call.)
Fred Drakec6fa34e1998-04-02 06:47:24 +00001819\end{cfuncdesc}
1820
1821\begin{cfuncdesc}{PyObject*}{PyString_InternFromString}{const char *v}
Fred Drakef8830d11998-04-23 14:06:01 +00001822A combination of \cfunction{PyString_FromString()} and
1823\cfunction{PyString_InternInPlace()}, returning either a new string object
Guido van Rossum44475131998-04-21 15:30:01 +00001824that has been interned, or a new (``owned'') reference to an earlier
1825interned string object with the same value.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001826\end{cfuncdesc}
1827
1828\begin{cfuncdesc}{char*}{PyString_AS_STRING}{PyObject *string}
Fred Drakef8830d11998-04-23 14:06:01 +00001829Macro form of \cfunction{PyString_AsString()} but without error checking.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001830\end{cfuncdesc}
1831
Fred Drakec6fa34e1998-04-02 06:47:24 +00001832\begin{cfuncdesc}{int}{PyString_GET_SIZE}{PyObject *string}
Fred Drakef8830d11998-04-23 14:06:01 +00001833Macro form of \cfunction{PyString_GetSize()} but without error checking.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001834\end{cfuncdesc}
1835
1836
Guido van Rossum44475131998-04-21 15:30:01 +00001837
Fred Drakeefd146c1999-02-15 15:30:45 +00001838\subsection{Tuple Objects \label{tupleObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00001839
1840\begin{ctypedesc}{PyTupleObject}
Fred Drakef8830d11998-04-23 14:06:01 +00001841This subtype of \ctype{PyObject} represents a Python tuple object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001842\end{ctypedesc}
1843
1844\begin{cvardesc}{PyTypeObject}{PyTuple_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00001845This instance of \ctype{PyTypeObject} represents the Python tuple type.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001846\end{cvardesc}
1847
1848\begin{cfuncdesc}{int}{PyTuple_Check}{PyObject *p}
1849Return true if the argument is a tuple object.
1850\end{cfuncdesc}
1851
Fred Drakec6fa34e1998-04-02 06:47:24 +00001852\begin{cfuncdesc}{PyObject*}{PyTuple_New}{int s}
Fred Drakee058b4f1998-02-16 06:15:35 +00001853Return a new tuple object of size \var{s}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001854\end{cfuncdesc}
1855
1856\begin{cfuncdesc}{int}{PyTuple_Size}{PyTupleObject *p}
Fred Drakee058b4f1998-02-16 06:15:35 +00001857Takes a pointer to a tuple object, and returns the size
Fred Drakee5bf8b21998-02-12 21:22:28 +00001858of that tuple.
1859\end{cfuncdesc}
1860
Fred Drakec6fa34e1998-04-02 06:47:24 +00001861\begin{cfuncdesc}{PyObject*}{PyTuple_GetItem}{PyTupleObject *p, int pos}
Fred Drakee058b4f1998-02-16 06:15:35 +00001862Returns the object at position \var{pos} in the tuple pointed
1863to by \var{p}. If \var{pos} is out of bounds, returns \NULL{} and
Fred Drakef8830d11998-04-23 14:06:01 +00001864sets an \exception{IndexError} exception. \strong{Note:} this
1865function returns a ``borrowed'' reference.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001866\end{cfuncdesc}
1867
Fred Drakec6fa34e1998-04-02 06:47:24 +00001868\begin{cfuncdesc}{PyObject*}{PyTuple_GET_ITEM}{PyTupleObject *p, int pos}
Fred Drakee058b4f1998-02-16 06:15:35 +00001869Does the same, but does no checking of its arguments.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001870\end{cfuncdesc}
1871
Fred Drakec6fa34e1998-04-02 06:47:24 +00001872\begin{cfuncdesc}{PyObject*}{PyTuple_GetSlice}{PyTupleObject *p,
Fred Drakee5bf8b21998-02-12 21:22:28 +00001873 int low,
1874 int high}
Fred Drakee058b4f1998-02-16 06:15:35 +00001875Takes a slice of the tuple pointed to by \var{p} from
1876\var{low} to \var{high} and returns it as a new tuple.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001877\end{cfuncdesc}
1878
1879\begin{cfuncdesc}{int}{PyTuple_SetItem}{PyTupleObject *p,
1880 int pos,
1881 PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001882Inserts a reference to object \var{o} at position \var{pos} of
1883the tuple pointed to by \var{p}. It returns \code{0} on success.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001884\end{cfuncdesc}
1885
1886\begin{cfuncdesc}{void}{PyTuple_SET_ITEM}{PyTupleObject *p,
1887 int pos,
1888 PyObject *o}
1889
Fred Drakee058b4f1998-02-16 06:15:35 +00001890Does the same, but does no error checking, and
Fred Drakee5bf8b21998-02-12 21:22:28 +00001891should \emph{only} be used to fill in brand new tuples.
1892\end{cfuncdesc}
1893
Fred Drakec6fa34e1998-04-02 06:47:24 +00001894\begin{cfuncdesc}{int}{_PyTuple_Resize}{PyTupleObject *p,
Fred Drakee5bf8b21998-02-12 21:22:28 +00001895 int new,
1896 int last_is_sticky}
Fred Drakee058b4f1998-02-16 06:15:35 +00001897Can be used to resize a tuple. Because tuples are
Fred Drakee5bf8b21998-02-12 21:22:28 +00001898\emph{supposed} to be immutable, this should only be used if there is only
1899one module referencing the object. Do \emph{not} use this if the tuple may
Fred Drakee058b4f1998-02-16 06:15:35 +00001900already be known to some other part of the code. \var{last_is_sticky} is
1901a flag --- if set, the tuple will grow or shrink at the front, otherwise
Fred Drakee5bf8b21998-02-12 21:22:28 +00001902it will grow or shrink at the end. Think of this as destroying the old
1903tuple and creating a new one, only more efficiently.
1904\end{cfuncdesc}
1905
1906
Fred Drakeefd146c1999-02-15 15:30:45 +00001907\subsection{List Objects \label{listObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00001908
1909\begin{ctypedesc}{PyListObject}
Fred Drakef8830d11998-04-23 14:06:01 +00001910This subtype of \ctype{PyObject} represents a Python list object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001911\end{ctypedesc}
1912
1913\begin{cvardesc}{PyTypeObject}{PyList_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00001914This instance of \ctype{PyTypeObject} represents the Python list type.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001915\end{cvardesc}
1916
1917\begin{cfuncdesc}{int}{PyList_Check}{PyObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00001918Returns true if its argument is a \ctype{PyListObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001919\end{cfuncdesc}
1920
Fred Drakec6fa34e1998-04-02 06:47:24 +00001921\begin{cfuncdesc}{PyObject*}{PyList_New}{int size}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001922Returns a new list of length \var{len} on success, and \NULL{} on
1923failure.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001924\end{cfuncdesc}
1925
Fred Drakec6fa34e1998-04-02 06:47:24 +00001926\begin{cfuncdesc}{int}{PyList_Size}{PyObject *list}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001927Returns the length of the list object in \var{list}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001928\end{cfuncdesc}
1929
Fred Drakec6fa34e1998-04-02 06:47:24 +00001930\begin{cfuncdesc}{PyObject*}{PyList_GetItem}{PyObject *list, int index}
Guido van Rossum44475131998-04-21 15:30:01 +00001931Returns the object at position \var{pos} in the list pointed
1932to by \var{p}. If \var{pos} is out of bounds, returns \NULL{} and
Fred Drakef8830d11998-04-23 14:06:01 +00001933sets an \exception{IndexError} exception. \strong{Note:} this
1934function returns a ``borrowed'' reference.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001935\end{cfuncdesc}
1936
Fred Drakec6fa34e1998-04-02 06:47:24 +00001937\begin{cfuncdesc}{int}{PyList_SetItem}{PyObject *list, int index,
1938 PyObject *item}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001939Sets the item at index \var{index} in list to \var{item}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001940\end{cfuncdesc}
1941
Fred Drakec6fa34e1998-04-02 06:47:24 +00001942\begin{cfuncdesc}{int}{PyList_Insert}{PyObject *list, int index,
Guido van Rossum44475131998-04-21 15:30:01 +00001943 PyObject *item}
1944Inserts the item \var{item} into list \var{list} in front of index
1945\var{index}. Returns 0 if successful; returns -1 and sets an
1946exception if unsuccessful. Analogous to \code{list.insert(index, item)}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001947\end{cfuncdesc}
1948
Fred Drakec6fa34e1998-04-02 06:47:24 +00001949\begin{cfuncdesc}{int}{PyList_Append}{PyObject *list, PyObject *item}
Guido van Rossum44475131998-04-21 15:30:01 +00001950Appends the object \var{item} at the end of list \var{list}. Returns
19510 if successful; returns -1 and sets an exception if unsuccessful.
1952Analogous to \code{list.append(item)}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001953\end{cfuncdesc}
1954
Fred Drakec6fa34e1998-04-02 06:47:24 +00001955\begin{cfuncdesc}{PyObject*}{PyList_GetSlice}{PyObject *list,
1956 int low, int high}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001957Returns a list of the objects in \var{list} containing the objects
Guido van Rossum44475131998-04-21 15:30:01 +00001958\emph{between} \var{low} and \var{high}. Returns NULL and sets an
1959exception if unsuccessful.
1960Analogous to \code{list[low:high]}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001961\end{cfuncdesc}
1962
Fred Drakec6fa34e1998-04-02 06:47:24 +00001963\begin{cfuncdesc}{int}{PyList_SetSlice}{PyObject *list,
1964 int low, int high,
1965 PyObject *itemlist}
Guido van Rossum44475131998-04-21 15:30:01 +00001966Sets the slice of \var{list} between \var{low} and \var{high} to the contents
1967of \var{itemlist}. Analogous to \code{list[low:high]=itemlist}. Returns 0
1968on success, -1 on failure.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001969\end{cfuncdesc}
1970
Fred Drakec6fa34e1998-04-02 06:47:24 +00001971\begin{cfuncdesc}{int}{PyList_Sort}{PyObject *list}
Guido van Rossum44475131998-04-21 15:30:01 +00001972Sorts the items of \var{list} in place. Returns 0 on success, -1 on failure.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001973\end{cfuncdesc}
1974
Fred Drakec6fa34e1998-04-02 06:47:24 +00001975\begin{cfuncdesc}{int}{PyList_Reverse}{PyObject *list}
Guido van Rossum44475131998-04-21 15:30:01 +00001976Reverses the items of \var{list} in place. Returns 0 on success, -1 on failure.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001977\end{cfuncdesc}
1978
Fred Drakec6fa34e1998-04-02 06:47:24 +00001979\begin{cfuncdesc}{PyObject*}{PyList_AsTuple}{PyObject *list}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001980Returns a new tuple object containing the contents of \var{list}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001981\end{cfuncdesc}
1982
Fred Drakec6fa34e1998-04-02 06:47:24 +00001983\begin{cfuncdesc}{PyObject*}{PyList_GET_ITEM}{PyObject *list, int i}
Fred Drakef8830d11998-04-23 14:06:01 +00001984Macro form of \cfunction{PyList_GetItem()} without error checking.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001985\end{cfuncdesc}
1986
Guido van Rossuma937d141998-04-24 18:22:02 +00001987\begin{cfuncdesc}{PyObject*}{PyList_SET_ITEM}{PyObject *list, int i,
1988 PyObject *o}
1989Macro form of \cfunction{PyList_SetItem()} without error checking.
1990\end{cfuncdesc}
1991
Fred Drakee5bf8b21998-02-12 21:22:28 +00001992\begin{cfuncdesc}{int}{PyList_GET_SIZE}{PyObject *list}
Fred Drakef8830d11998-04-23 14:06:01 +00001993Macro form of \cfunction{PyList_GetSize()} without error checking.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001994\end{cfuncdesc}
1995
1996
Fred Drakeefd146c1999-02-15 15:30:45 +00001997\section{Mapping Objects \label{mapObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00001998
Fred Drakeefd146c1999-02-15 15:30:45 +00001999\subsection{Dictionary Objects \label{dictObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002000
2001\begin{ctypedesc}{PyDictObject}
Fred Drakef8830d11998-04-23 14:06:01 +00002002This subtype of \ctype{PyObject} represents a Python dictionary object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002003\end{ctypedesc}
2004
2005\begin{cvardesc}{PyTypeObject}{PyDict_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00002006This instance of \ctype{PyTypeObject} represents the Python dictionary type.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002007\end{cvardesc}
2008
2009\begin{cfuncdesc}{int}{PyDict_Check}{PyObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002010Returns true if its argument is a \ctype{PyDictObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002011\end{cfuncdesc}
2012
Fred Drakec6fa34e1998-04-02 06:47:24 +00002013\begin{cfuncdesc}{PyObject*}{PyDict_New}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00002014Returns a new empty dictionary.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002015\end{cfuncdesc}
2016
2017\begin{cfuncdesc}{void}{PyDict_Clear}{PyDictObject *p}
Fred Drakee058b4f1998-02-16 06:15:35 +00002018Empties an existing dictionary of all key/value pairs.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002019\end{cfuncdesc}
2020
2021\begin{cfuncdesc}{int}{PyDict_SetItem}{PyDictObject *p,
2022 PyObject *key,
2023 PyObject *val}
Fred Drakee058b4f1998-02-16 06:15:35 +00002024Inserts \var{value} into the dictionary with a key of \var{key}. Both
2025\var{key} and \var{value} should be PyObjects, and \var{key} should be
2026hashable.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002027\end{cfuncdesc}
2028
2029\begin{cfuncdesc}{int}{PyDict_SetItemString}{PyDictObject *p,
2030 char *key,
2031 PyObject *val}
Fred Drakee058b4f1998-02-16 06:15:35 +00002032Inserts \var{value} into the dictionary using \var{key}
Fred Drakef8830d11998-04-23 14:06:01 +00002033as a key. \var{key} should be a \ctype{char *}. The key object is
Fred Drakee058b4f1998-02-16 06:15:35 +00002034created using \code{PyString_FromString(\var{key})}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002035\end{cfuncdesc}
2036
2037\begin{cfuncdesc}{int}{PyDict_DelItem}{PyDictObject *p, PyObject *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00002038Removes the entry in dictionary \var{p} with key \var{key}.
2039\var{key} is a PyObject.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002040\end{cfuncdesc}
2041
2042\begin{cfuncdesc}{int}{PyDict_DelItemString}{PyDictObject *p, char *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00002043Removes the entry in dictionary \var{p} which has a key
Fred Drakef8830d11998-04-23 14:06:01 +00002044specified by the \ctype{char *}\var{key}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002045\end{cfuncdesc}
2046
Fred Drakec6fa34e1998-04-02 06:47:24 +00002047\begin{cfuncdesc}{PyObject*}{PyDict_GetItem}{PyDictObject *p, PyObject *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00002048Returns the object from dictionary \var{p} which has a key
Guido van Rossum44475131998-04-21 15:30:01 +00002049\var{key}. Returns \NULL{} if the key \var{key} is not present, but
Fred Drakef8830d11998-04-23 14:06:01 +00002050without (!) setting an exception. \strong{Note:} this function
2051returns a ``borrowed'' reference.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002052\end{cfuncdesc}
2053
Fred Drakec6fa34e1998-04-02 06:47:24 +00002054\begin{cfuncdesc}{PyObject*}{PyDict_GetItemString}{PyDictObject *p, char *key}
Fred Drakef8830d11998-04-23 14:06:01 +00002055This is the same as \cfunction{PyDict_GetItem()}, but \var{key} is
2056specified as a \ctype{char *}, rather than a \ctype{PyObject *}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002057\end{cfuncdesc}
2058
Fred Drakec6fa34e1998-04-02 06:47:24 +00002059\begin{cfuncdesc}{PyObject*}{PyDict_Items}{PyDictObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002060Returns a \ctype{PyListObject} containing all the items
Guido van Rossum44475131998-04-21 15:30:01 +00002061from the dictionary, as in the dictinoary method \method{items()} (see
Fred Drakee058b4f1998-02-16 06:15:35 +00002062the \emph{Python Library Reference}).
Fred Drakee5bf8b21998-02-12 21:22:28 +00002063\end{cfuncdesc}
2064
Fred Drakec6fa34e1998-04-02 06:47:24 +00002065\begin{cfuncdesc}{PyObject*}{PyDict_Keys}{PyDictObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002066Returns a \ctype{PyListObject} containing all the keys
Guido van Rossum44475131998-04-21 15:30:01 +00002067from the dictionary, as in the dictionary method \method{keys()} (see the
Fred Drakee058b4f1998-02-16 06:15:35 +00002068\emph{Python Library Reference}).
Fred Drakee5bf8b21998-02-12 21:22:28 +00002069\end{cfuncdesc}
2070
Fred Drakec6fa34e1998-04-02 06:47:24 +00002071\begin{cfuncdesc}{PyObject*}{PyDict_Values}{PyDictObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002072Returns a \ctype{PyListObject} containing all the values
Guido van Rossum44475131998-04-21 15:30:01 +00002073from the dictionary \var{p}, as in the dictionary method
Fred Drakee058b4f1998-02-16 06:15:35 +00002074\method{values()} (see the \emph{Python Library Reference}).
Fred Drakee5bf8b21998-02-12 21:22:28 +00002075\end{cfuncdesc}
2076
2077\begin{cfuncdesc}{int}{PyDict_Size}{PyDictObject *p}
Fred Drakee058b4f1998-02-16 06:15:35 +00002078Returns the number of items in the dictionary.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002079\end{cfuncdesc}
2080
2081\begin{cfuncdesc}{int}{PyDict_Next}{PyDictObject *p,
2082 int ppos,
2083 PyObject **pkey,
2084 PyObject **pvalue}
2085
2086\end{cfuncdesc}
2087
2088
Fred Drakeefd146c1999-02-15 15:30:45 +00002089\section{Numeric Objects \label{numericObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002090
Fred Drakeefd146c1999-02-15 15:30:45 +00002091\subsection{Plain Integer Objects \label{intObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002092
2093\begin{ctypedesc}{PyIntObject}
Fred Drakef8830d11998-04-23 14:06:01 +00002094This subtype of \ctype{PyObject} represents a Python integer object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002095\end{ctypedesc}
2096
2097\begin{cvardesc}{PyTypeObject}{PyInt_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00002098This instance of \ctype{PyTypeObject} represents the Python plain
Fred Drakee5bf8b21998-02-12 21:22:28 +00002099integer type.
2100\end{cvardesc}
2101
2102\begin{cfuncdesc}{int}{PyInt_Check}{PyObject *}
2103
2104\end{cfuncdesc}
2105
Fred Drakec6fa34e1998-04-02 06:47:24 +00002106\begin{cfuncdesc}{PyObject*}{PyInt_FromLong}{long ival}
Fred Drakee058b4f1998-02-16 06:15:35 +00002107Creates a new integer object with a value of \var{ival}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002108
2109The current implementation keeps an array of integer objects for all
Fred Drakee058b4f1998-02-16 06:15:35 +00002110integers between \code{-1} and \code{100}, when you create an int in
2111that range you actually just get back a reference to the existing
2112object. So it should be possible to change the value of \code{1}. I
Fred Drake7e9d3141998-04-03 05:02:28 +00002113suspect the behaviour of Python in this case is undefined. :-)
Fred Drakee5bf8b21998-02-12 21:22:28 +00002114\end{cfuncdesc}
2115
2116\begin{cfuncdesc}{long}{PyInt_AS_LONG}{PyIntObject *io}
Fred Drakee058b4f1998-02-16 06:15:35 +00002117Returns the value of the object \var{io}. No error checking is
2118performed.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002119\end{cfuncdesc}
2120
2121\begin{cfuncdesc}{long}{PyInt_AsLong}{PyObject *io}
Fred Drakef8830d11998-04-23 14:06:01 +00002122Will first attempt to cast the object to a \ctype{PyIntObject}, if
Fred Drakee058b4f1998-02-16 06:15:35 +00002123it is not already one, and then return its value.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002124\end{cfuncdesc}
2125
2126\begin{cfuncdesc}{long}{PyInt_GetMax}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00002127Returns the systems idea of the largest integer it can handle
2128(\constant{LONG_MAX}, as defined in the system header files).
Fred Drakee5bf8b21998-02-12 21:22:28 +00002129\end{cfuncdesc}
2130
2131
Fred Drakeefd146c1999-02-15 15:30:45 +00002132\subsection{Long Integer Objects \label{longObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002133
2134\begin{ctypedesc}{PyLongObject}
Fred Drakef8830d11998-04-23 14:06:01 +00002135This subtype of \ctype{PyObject} represents a Python long integer
Fred Drakee058b4f1998-02-16 06:15:35 +00002136object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002137\end{ctypedesc}
2138
2139\begin{cvardesc}{PyTypeObject}{PyLong_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00002140This instance of \ctype{PyTypeObject} represents the Python long
Fred Drakee058b4f1998-02-16 06:15:35 +00002141integer type.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002142\end{cvardesc}
2143
2144\begin{cfuncdesc}{int}{PyLong_Check}{PyObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002145Returns true if its argument is a \ctype{PyLongObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002146\end{cfuncdesc}
2147
Fred Drakec6fa34e1998-04-02 06:47:24 +00002148\begin{cfuncdesc}{PyObject*}{PyLong_FromLong}{long v}
Fred Drakef8830d11998-04-23 14:06:01 +00002149Returns a new \ctype{PyLongObject} object from \var{v}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002150\end{cfuncdesc}
2151
Fred Drakec6fa34e1998-04-02 06:47:24 +00002152\begin{cfuncdesc}{PyObject*}{PyLong_FromUnsignedLong}{unsigned long v}
Fred Drakef8830d11998-04-23 14:06:01 +00002153Returns a new \ctype{PyLongObject} object from an unsigned \C{} long.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002154\end{cfuncdesc}
2155
Fred Drakec6fa34e1998-04-02 06:47:24 +00002156\begin{cfuncdesc}{PyObject*}{PyLong_FromDouble}{double v}
Fred Drakef8830d11998-04-23 14:06:01 +00002157Returns a new \ctype{PyLongObject} object from the integer part of \var{v}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002158\end{cfuncdesc}
2159
Fred Drakec6fa34e1998-04-02 06:47:24 +00002160\begin{cfuncdesc}{long}{PyLong_AsLong}{PyObject *pylong}
Fred Drakef8830d11998-04-23 14:06:01 +00002161Returns a \C{} \ctype{long} representation of the contents of \var{pylong}.
2162WHAT HAPPENS IF \var{pylong} is greater than \constant{LONG_MAX}?
Fred Drakee5bf8b21998-02-12 21:22:28 +00002163\end{cfuncdesc}
2164
Fred Drakec6fa34e1998-04-02 06:47:24 +00002165\begin{cfuncdesc}{unsigned long}{PyLong_AsUnsignedLong}{PyObject *pylong}
Fred Drakef8830d11998-04-23 14:06:01 +00002166Returns a \C{} \ctype{unsigned long} representation of the contents of
2167\var{pylong}. WHAT HAPPENS IF \var{pylong} is greater than
2168\constant{ULONG_MAX}?
Fred Drakee5bf8b21998-02-12 21:22:28 +00002169\end{cfuncdesc}
2170
Fred Drakec6fa34e1998-04-02 06:47:24 +00002171\begin{cfuncdesc}{double}{PyLong_AsDouble}{PyObject *pylong}
Fred Drakef8830d11998-04-23 14:06:01 +00002172Returns a \C{} \ctype{double} representation of the contents of \var{pylong}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002173\end{cfuncdesc}
2174
Fred Drakec6fa34e1998-04-02 06:47:24 +00002175\begin{cfuncdesc}{PyObject*}{PyLong_FromString}{char *str, char **pend,
2176 int base}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002177\end{cfuncdesc}
2178
2179
Fred Drakeefd146c1999-02-15 15:30:45 +00002180\subsection{Floating Point Objects \label{floatObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002181
2182\begin{ctypedesc}{PyFloatObject}
Fred Drakef8830d11998-04-23 14:06:01 +00002183This subtype of \ctype{PyObject} represents a Python floating point
Fred Drakee058b4f1998-02-16 06:15:35 +00002184object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002185\end{ctypedesc}
2186
2187\begin{cvardesc}{PyTypeObject}{PyFloat_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00002188This instance of \ctype{PyTypeObject} represents the Python floating
Fred Drakee5bf8b21998-02-12 21:22:28 +00002189point type.
2190\end{cvardesc}
2191
2192\begin{cfuncdesc}{int}{PyFloat_Check}{PyObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002193Returns true if its argument is a \ctype{PyFloatObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002194\end{cfuncdesc}
2195
Fred Drakec6fa34e1998-04-02 06:47:24 +00002196\begin{cfuncdesc}{PyObject*}{PyFloat_FromDouble}{double v}
Fred Drakef8830d11998-04-23 14:06:01 +00002197Creates a \ctype{PyFloatObject} object from \var{v}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002198\end{cfuncdesc}
2199
Fred Drakec6fa34e1998-04-02 06:47:24 +00002200\begin{cfuncdesc}{double}{PyFloat_AsDouble}{PyObject *pyfloat}
Fred Drakef8830d11998-04-23 14:06:01 +00002201Returns a \C{} \ctype{double} representation of the contents of \var{pyfloat}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002202\end{cfuncdesc}
2203
Fred Drakec6fa34e1998-04-02 06:47:24 +00002204\begin{cfuncdesc}{double}{PyFloat_AS_DOUBLE}{PyObject *pyfloat}
Fred Drakef8830d11998-04-23 14:06:01 +00002205Returns a \C{} \ctype{double} representation of the contents of
2206\var{pyfloat}, but without error checking.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002207\end{cfuncdesc}
2208
2209
Fred Drakeefd146c1999-02-15 15:30:45 +00002210\subsection{Complex Number Objects \label{complexObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002211
2212\begin{ctypedesc}{Py_complex}
Fred Drake4de05a91998-02-16 14:25:26 +00002213The \C{} structure which corresponds to the value portion of a Python
2214complex number object. Most of the functions for dealing with complex
2215number objects use structures of this type as input or output values,
2216as appropriate. It is defined as:
2217
Fred Drakee058b4f1998-02-16 06:15:35 +00002218\begin{verbatim}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002219typedef struct {
2220 double real;
2221 double imag;
Fred Drake4de05a91998-02-16 14:25:26 +00002222} Py_complex;
Fred Drakee058b4f1998-02-16 06:15:35 +00002223\end{verbatim}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002224\end{ctypedesc}
2225
2226\begin{ctypedesc}{PyComplexObject}
Fred Drakef8830d11998-04-23 14:06:01 +00002227This subtype of \ctype{PyObject} represents a Python complex number object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002228\end{ctypedesc}
2229
2230\begin{cvardesc}{PyTypeObject}{PyComplex_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00002231This instance of \ctype{PyTypeObject} represents the Python complex
Fred Drakee5bf8b21998-02-12 21:22:28 +00002232number type.
2233\end{cvardesc}
2234
2235\begin{cfuncdesc}{int}{PyComplex_Check}{PyObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002236Returns true if its argument is a \ctype{PyComplexObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002237\end{cfuncdesc}
2238
Fred Drakec6fa34e1998-04-02 06:47:24 +00002239\begin{cfuncdesc}{Py_complex}{_Py_c_sum}{Py_complex left, Py_complex right}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002240\end{cfuncdesc}
2241
Fred Drakec6fa34e1998-04-02 06:47:24 +00002242\begin{cfuncdesc}{Py_complex}{_Py_c_diff}{Py_complex left, Py_complex right}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002243\end{cfuncdesc}
2244
Fred Drakec6fa34e1998-04-02 06:47:24 +00002245\begin{cfuncdesc}{Py_complex}{_Py_c_neg}{Py_complex complex}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002246\end{cfuncdesc}
2247
Fred Drakec6fa34e1998-04-02 06:47:24 +00002248\begin{cfuncdesc}{Py_complex}{_Py_c_prod}{Py_complex left, Py_complex right}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002249\end{cfuncdesc}
2250
Fred Drakec6fa34e1998-04-02 06:47:24 +00002251\begin{cfuncdesc}{Py_complex}{_Py_c_quot}{Py_complex dividend,
2252 Py_complex divisor}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002253\end{cfuncdesc}
2254
Fred Drakec6fa34e1998-04-02 06:47:24 +00002255\begin{cfuncdesc}{Py_complex}{_Py_c_pow}{Py_complex num, Py_complex exp}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002256\end{cfuncdesc}
2257
Fred Drakec6fa34e1998-04-02 06:47:24 +00002258\begin{cfuncdesc}{PyObject*}{PyComplex_FromCComplex}{Py_complex v}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002259\end{cfuncdesc}
2260
Fred Drakec6fa34e1998-04-02 06:47:24 +00002261\begin{cfuncdesc}{PyObject*}{PyComplex_FromDoubles}{double real, double imag}
Fred Drakef8830d11998-04-23 14:06:01 +00002262Returns a new \ctype{PyComplexObject} object from \var{real} and \var{imag}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002263\end{cfuncdesc}
2264
2265\begin{cfuncdesc}{double}{PyComplex_RealAsDouble}{PyObject *op}
Fred Drakef8830d11998-04-23 14:06:01 +00002266Returns the real part of \var{op} as a \C{} \ctype{double}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002267\end{cfuncdesc}
2268
2269\begin{cfuncdesc}{double}{PyComplex_ImagAsDouble}{PyObject *op}
Fred Drakef8830d11998-04-23 14:06:01 +00002270Returns the imaginary part of \var{op} as a \C{} \ctype{double}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002271\end{cfuncdesc}
2272
2273\begin{cfuncdesc}{Py_complex}{PyComplex_AsCComplex}{PyObject *op}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002274\end{cfuncdesc}
2275
2276
2277
Fred Drakeefd146c1999-02-15 15:30:45 +00002278\section{Other Objects \label{otherObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002279
Fred Drakeefd146c1999-02-15 15:30:45 +00002280\subsection{File Objects \label{fileObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002281
2282\begin{ctypedesc}{PyFileObject}
Fred Drakef8830d11998-04-23 14:06:01 +00002283This subtype of \ctype{PyObject} represents a Python file object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002284\end{ctypedesc}
2285
2286\begin{cvardesc}{PyTypeObject}{PyFile_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00002287This instance of \ctype{PyTypeObject} represents the Python file type.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002288\end{cvardesc}
2289
2290\begin{cfuncdesc}{int}{PyFile_Check}{PyObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002291Returns true if its argument is a \ctype{PyFileObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002292\end{cfuncdesc}
2293
Fred Drakec6fa34e1998-04-02 06:47:24 +00002294\begin{cfuncdesc}{PyObject*}{PyFile_FromString}{char *name, char *mode}
Fred Drakef8830d11998-04-23 14:06:01 +00002295Creates a new \ctype{PyFileObject} pointing to the file
Fred Drakee058b4f1998-02-16 06:15:35 +00002296specified in \var{name} with the mode specified in \var{mode}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002297\end{cfuncdesc}
2298
Fred Drakec6fa34e1998-04-02 06:47:24 +00002299\begin{cfuncdesc}{PyObject*}{PyFile_FromFile}{FILE *fp,
Fred Drakeb92dce31998-02-25 15:40:22 +00002300 char *name, char *mode, int (*close)}
Fred Drakef8830d11998-04-23 14:06:01 +00002301Creates a new \ctype{PyFileObject} from the already-open \var{fp}.
Fred Drakee058b4f1998-02-16 06:15:35 +00002302The function \var{close} will be called when the file should be
2303closed.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002304\end{cfuncdesc}
2305
2306\begin{cfuncdesc}{FILE *}{PyFile_AsFile}{PyFileObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002307Returns the file object associated with \var{p} as a \ctype{FILE *}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002308\end{cfuncdesc}
2309
Fred Drakec6fa34e1998-04-02 06:47:24 +00002310\begin{cfuncdesc}{PyObject*}{PyFile_GetLine}{PyObject *p, int n}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002311undocumented as yet
2312\end{cfuncdesc}
2313
Fred Drakec6fa34e1998-04-02 06:47:24 +00002314\begin{cfuncdesc}{PyObject*}{PyFile_Name}{PyObject *p}
Fred Drakee058b4f1998-02-16 06:15:35 +00002315Returns the name of the file specified by \var{p} as a
Fred Drakef8830d11998-04-23 14:06:01 +00002316\ctype{PyStringObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002317\end{cfuncdesc}
2318
2319\begin{cfuncdesc}{void}{PyFile_SetBufSize}{PyFileObject *p, int n}
Fred Drakee058b4f1998-02-16 06:15:35 +00002320Available on systems with \cfunction{setvbuf()} only. This should
2321only be called immediately after file object creation.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002322\end{cfuncdesc}
2323
2324\begin{cfuncdesc}{int}{PyFile_SoftSpace}{PyFileObject *p, int newflag}
Fred Drakef8830d11998-04-23 14:06:01 +00002325Sets the \member{softspace} attribute of \var{p} to \var{newflag}.
Fred Drakec6fa34e1998-04-02 06:47:24 +00002326Returns the previous value. This function clears any errors, and will
Fred Drakee058b4f1998-02-16 06:15:35 +00002327return \code{0} as the previous value if the attribute either does not
2328exist or if there were errors in retrieving it. There is no way to
2329detect errors from this function, but doing so should not be needed.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002330\end{cfuncdesc}
2331
Fred Drakec6fa34e1998-04-02 06:47:24 +00002332\begin{cfuncdesc}{int}{PyFile_WriteObject}{PyObject *obj, PyFileObject *p,
2333 int flags}
Fred Drakee058b4f1998-02-16 06:15:35 +00002334Writes object \var{obj} to file object \var{p}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002335\end{cfuncdesc}
2336
Fred Drakec6fa34e1998-04-02 06:47:24 +00002337\begin{cfuncdesc}{int}{PyFile_WriteString}{char *s, PyFileObject *p,
2338 int flags}
Fred Drakee058b4f1998-02-16 06:15:35 +00002339Writes string \var{s} to file object \var{p}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002340\end{cfuncdesc}
2341
2342
Fred Drakeefd146c1999-02-15 15:30:45 +00002343\subsection{Module Objects \label{moduleObjects}}
2344
2345\obindex{module}
2346There are only a few functions special to module objects.
2347
2348\begin{cfuncdesc}{PyObject *}{PyModule_New}{char *name}
2349Return a new module object with the \member{__name__} attribute set to
2350\var{name}. Only the module's \member{__doc__} and \member{__name__}
2351attributes are filled in; the caller is responsible for providing a
2352\member{__file__} attribute.
2353\end{cfuncdesc}
2354
2355\begin{cfuncdesc}{PyObject *}{PyModule_GetDict}{PyObject *module}
2356Return the dictionary object that implements \var{module}'s namespace;
2357this object is the same as the \member{__dict__} attribute of the
2358module object. This function never fails.
2359\end{cfuncdesc}
2360
2361\begin{cfuncdesc}{char *}{PyModule_GetName}{PyObject *module}
2362Return \var{module}'s \member{__name__} value. If the module does not
2363provide one, \exception{SystemError} is raised.
2364\end{cfuncdesc}
2365
2366\begin{cfuncdesc}{char *}{PyModule_GetFilename}{PyObject *module}
2367Return the name of the file from which \var{module} was loaded using
2368\var{module}'s \member{__file__} attribute. If this is not defined,
2369raise \exception{SystemError}.
2370\end{cfuncdesc}
2371
2372
2373\subsection{CObjects \label{cObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002374
Guido van Rossum44475131998-04-21 15:30:01 +00002375\begin{ctypedesc}{PyCObject}
Fred Drakef8830d11998-04-23 14:06:01 +00002376This subtype of \ctype{PyObject} represents an opaque value, useful for
Guido van Rossum44475131998-04-21 15:30:01 +00002377\C{} extension modules who need to pass an opaque value (as a
Fred Drakef8830d11998-04-23 14:06:01 +00002378\ctype{void *} pointer) through Python code to other \C{} code. It is
Guido van Rossum44475131998-04-21 15:30:01 +00002379often used to make a C function pointer defined in one module
2380available to other modules, so the regular import mechanism can be
2381used to access C APIs defined in dynamically loaded modules.
2382\end{ctypedesc}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002383
Guido van Rossum44475131998-04-21 15:30:01 +00002384\begin{cfuncdesc}{PyObject *}{PyCObject_FromVoidPtr}{void* cobj,
2385 void (*destr)(void *)}
Fred Drakef8830d11998-04-23 14:06:01 +00002386Creates a \ctype{PyCObject} from the \code{void *} \var{cobj}. The
Fred Drakedab44681999-05-13 18:41:14 +00002387\var{destr} function will be called when the object is reclaimed, unless
2388it is \NULL.
Guido van Rossum44475131998-04-21 15:30:01 +00002389\end{cfuncdesc}
2390
2391\begin{cfuncdesc}{PyObject *}{PyCObject_FromVoidPtrAndDesc}{void* cobj,
2392 void* desc, void (*destr)(void *, void *) }
Fred Drakef8830d11998-04-23 14:06:01 +00002393Creates a \ctype{PyCObject} from the \ctype{void *}\var{cobj}. The
2394\var{destr} function will be called when the object is reclaimed. The
2395\var{desc} argument can be used to pass extra callback data for the
2396destructor function.
Guido van Rossum44475131998-04-21 15:30:01 +00002397\end{cfuncdesc}
2398
2399\begin{cfuncdesc}{void *}{PyCObject_AsVoidPtr}{PyObject* self}
Fred Drakef8830d11998-04-23 14:06:01 +00002400Returns the object \ctype{void *} that the \ctype{PyCObject} \var{self}
Guido van Rossum44475131998-04-21 15:30:01 +00002401was created with.
2402\end{cfuncdesc}
2403
2404\begin{cfuncdesc}{void *}{PyCObject_GetDesc}{PyObject* self}
Fred Drakef8830d11998-04-23 14:06:01 +00002405Returns the description \ctype{void *} that the \ctype{PyCObject}
Guido van Rossum44475131998-04-21 15:30:01 +00002406\var{self} was created with.
2407\end{cfuncdesc}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002408
Fred Drakeefd146c1999-02-15 15:30:45 +00002409\chapter{Initialization, Finalization, and Threads
2410 \label{initialization}}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002411
Guido van Rossum4a944d71997-08-14 20:35:38 +00002412\begin{cfuncdesc}{void}{Py_Initialize}{}
2413Initialize the Python interpreter. In an application embedding
2414Python, this should be called before using any other Python/C API
Fred Drakee058b4f1998-02-16 06:15:35 +00002415functions; with the exception of \cfunction{Py_SetProgramName()},
2416\cfunction{PyEval_InitThreads()}, \cfunction{PyEval_ReleaseLock()},
2417and \cfunction{PyEval_AcquireLock()}. This initializes the table of
2418loaded modules (\code{sys.modules}), and creates the fundamental
Fred Drake4de05a91998-02-16 14:25:26 +00002419modules \module{__builtin__}\refbimodindex{__builtin__},
2420\module{__main__}\refbimodindex{__main__} and
2421\module{sys}\refbimodindex{sys}. It also initializes the module
2422search path (\code{sys.path}).%
2423\indexiii{module}{search}{path}
2424It does not set \code{sys.argv}; use \cfunction{PySys_SetArgv()} for
2425that. This is a no-op when called for a second time (without calling
Fred Drakee058b4f1998-02-16 06:15:35 +00002426\cfunction{Py_Finalize()} first). There is no return value; it is a
2427fatal error if the initialization fails.
Guido van Rossum42cefd01997-10-05 15:27:29 +00002428\end{cfuncdesc}
2429
2430\begin{cfuncdesc}{int}{Py_IsInitialized}{}
Guido van Rossum42cefd01997-10-05 15:27:29 +00002431Return true (nonzero) when the Python interpreter has been
Fred Drakee058b4f1998-02-16 06:15:35 +00002432initialized, false (zero) if not. After \cfunction{Py_Finalize()} is
2433called, this returns false until \cfunction{Py_Initialize()} is called
Guido van Rossum42cefd01997-10-05 15:27:29 +00002434again.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002435\end{cfuncdesc}
2436
2437\begin{cfuncdesc}{void}{Py_Finalize}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00002438Undo all initializations made by \cfunction{Py_Initialize()} and
2439subsequent use of Python/C API functions, and destroy all
2440sub-interpreters (see \cfunction{Py_NewInterpreter()} below) that were
2441created and not yet destroyed since the last call to
2442\cfunction{Py_Initialize()}. Ideally, this frees all memory allocated
2443by the Python interpreter. This is a no-op when called for a second
2444time (without calling \cfunction{Py_Initialize()} again first). There
2445is no return value; errors during finalization are ignored.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002446
2447This function is provided for a number of reasons. An embedding
2448application might want to restart Python without having to restart the
2449application itself. An application that has loaded the Python
2450interpreter from a dynamically loadable library (or DLL) might want to
2451free all memory allocated by Python before unloading the DLL. During a
2452hunt for memory leaks in an application a developer might want to free
2453all memory allocated by Python before exiting from the application.
2454
Fred Drakee058b4f1998-02-16 06:15:35 +00002455\strong{Bugs and caveats:} The destruction of modules and objects in
Guido van Rossum4a944d71997-08-14 20:35:38 +00002456modules is done in random order; this may cause destructors
Fred Drakee058b4f1998-02-16 06:15:35 +00002457(\method{__del__()} methods) to fail when they depend on other objects
Guido van Rossum4a944d71997-08-14 20:35:38 +00002458(even functions) or modules. Dynamically loaded extension modules
2459loaded by Python are not unloaded. Small amounts of memory allocated
2460by the Python interpreter may not be freed (if you find a leak, please
2461report it). Memory tied up in circular references between objects is
2462not freed. Some memory allocated by extension modules may not be
2463freed. Some extension may not work properly if their initialization
2464routine is called more than once; this can happen if an applcation
Fred Drakee058b4f1998-02-16 06:15:35 +00002465calls \cfunction{Py_Initialize()} and \cfunction{Py_Finalize()} more
2466than once.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002467\end{cfuncdesc}
2468
Fred Drakec6fa34e1998-04-02 06:47:24 +00002469\begin{cfuncdesc}{PyThreadState*}{Py_NewInterpreter}{}
Fred Drake4de05a91998-02-16 14:25:26 +00002470Create a new sub-interpreter. This is an (almost) totally separate
2471environment for the execution of Python code. In particular, the new
2472interpreter has separate, independent versions of all imported
2473modules, including the fundamental modules
2474\module{__builtin__}\refbimodindex{__builtin__},
2475\module{__main__}\refbimodindex{__main__} and
2476\module{sys}\refbimodindex{sys}. The table of loaded modules
2477(\code{sys.modules}) and the module search path (\code{sys.path}) are
2478also separate. The new environment has no \code{sys.argv} variable.
2479It has new standard I/O stream file objects \code{sys.stdin},
2480\code{sys.stdout} and \code{sys.stderr} (however these refer to the
Fred Drakef8830d11998-04-23 14:06:01 +00002481same underlying \ctype{FILE} structures in the \C{} library).
Guido van Rossum4a944d71997-08-14 20:35:38 +00002482
2483The return value points to the first thread state created in the new
2484sub-interpreter. This thread state is made the current thread state.
2485Note that no actual thread is created; see the discussion of thread
2486states below. If creation of the new interpreter is unsuccessful,
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002487\NULL{} is returned; no exception is set since the exception state
Guido van Rossum4a944d71997-08-14 20:35:38 +00002488is stored in the current thread state and there may not be a current
2489thread state. (Like all other Python/C API functions, the global
2490interpreter lock must be held before calling this function and is
2491still held when it returns; however, unlike most other Python/C API
2492functions, there needn't be a current thread state on entry.)
2493
2494Extension modules are shared between (sub-)interpreters as follows:
2495the first time a particular extension is imported, it is initialized
2496normally, and a (shallow) copy of its module's dictionary is
2497squirreled away. When the same extension is imported by another
2498(sub-)interpreter, a new module is initialized and filled with the
Fred Drakee058b4f1998-02-16 06:15:35 +00002499contents of this copy; the extension's \code{init} function is not
2500called. Note that this is different from what happens when an
2501extension is imported after the interpreter has been completely
2502re-initialized by calling \cfunction{Py_Finalize()} and
2503\cfunction{Py_Initialize()}; in that case, the extension's \code{init}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002504function \emph{is} called again.
2505
Fred Drakee058b4f1998-02-16 06:15:35 +00002506\strong{Bugs and caveats:} Because sub-interpreters (and the main
Guido van Rossum4a944d71997-08-14 20:35:38 +00002507interpreter) are part of the same process, the insulation between them
Fred Drakee058b4f1998-02-16 06:15:35 +00002508isn't perfect --- for example, using low-level file operations like
Fred Drakef8830d11998-04-23 14:06:01 +00002509\function{os.close()} they can (accidentally or maliciously) affect each
Guido van Rossum4a944d71997-08-14 20:35:38 +00002510other's open files. Because of the way extensions are shared between
2511(sub-)interpreters, some extensions may not work properly; this is
2512especially likely when the extension makes use of (static) global
2513variables, or when the extension manipulates its module's dictionary
2514after its initialization. It is possible to insert objects created in
2515one sub-interpreter into a namespace of another sub-interpreter; this
2516should be done with great care to avoid sharing user-defined
2517functions, methods, instances or classes between sub-interpreters,
2518since import operations executed by such objects may affect the
2519wrong (sub-)interpreter's dictionary of loaded modules. (XXX This is
2520a hard-to-fix bug that will be addressed in a future release.)
2521\end{cfuncdesc}
2522
2523\begin{cfuncdesc}{void}{Py_EndInterpreter}{PyThreadState *tstate}
2524Destroy the (sub-)interpreter represented by the given thread state.
2525The given thread state must be the current thread state. See the
2526discussion of thread states below. When the call returns, the current
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002527thread state is \NULL{}. All thread states associated with this
Guido van Rossum4a944d71997-08-14 20:35:38 +00002528interpreted are destroyed. (The global interpreter lock must be held
2529before calling this function and is still held when it returns.)
Fred Drakee058b4f1998-02-16 06:15:35 +00002530\cfunction{Py_Finalize()} will destroy all sub-interpreters that haven't
Guido van Rossum4a944d71997-08-14 20:35:38 +00002531been explicitly destroyed at that point.
2532\end{cfuncdesc}
2533
2534\begin{cfuncdesc}{void}{Py_SetProgramName}{char *name}
Fred Drakee058b4f1998-02-16 06:15:35 +00002535This function should be called before \cfunction{Py_Initialize()} is called
Guido van Rossum4a944d71997-08-14 20:35:38 +00002536for the first time, if it is called at all. It tells the interpreter
Fred Drakee058b4f1998-02-16 06:15:35 +00002537the value of the \code{argv[0]} argument to the \cfunction{main()} function
2538of the program. This is used by \cfunction{Py_GetPath()} and some other
Guido van Rossum4a944d71997-08-14 20:35:38 +00002539functions below to find the Python run-time libraries relative to the
2540interpreter executable. The default value is \code{"python"}. The
2541argument should point to a zero-terminated character string in static
2542storage whose contents will not change for the duration of the
2543program's execution. No code in the Python interpreter will change
2544the contents of this storage.
2545\end{cfuncdesc}
2546
Fred Drakec6fa34e1998-04-02 06:47:24 +00002547\begin{cfuncdesc}{char*}{Py_GetProgramName}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00002548Return the program name set with \cfunction{Py_SetProgramName()}, or the
Guido van Rossum4a944d71997-08-14 20:35:38 +00002549default. The returned string points into static storage; the caller
2550should not modify its value.
2551\end{cfuncdesc}
2552
Fred Drakec6fa34e1998-04-02 06:47:24 +00002553\begin{cfuncdesc}{char*}{Py_GetPrefix}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00002554Return the \emph{prefix} for installed platform-independent files. This
Guido van Rossum4a944d71997-08-14 20:35:38 +00002555is derived through a number of complicated rules from the program name
Fred Drakee058b4f1998-02-16 06:15:35 +00002556set with \cfunction{Py_SetProgramName()} and some environment variables;
Guido van Rossum4a944d71997-08-14 20:35:38 +00002557for example, if the program name is \code{"/usr/local/bin/python"},
2558the prefix is \code{"/usr/local"}. The returned string points into
2559static storage; the caller should not modify its value. This
Fred Drakec94d9341998-04-12 02:39:13 +00002560corresponds to the \makevar{prefix} variable in the top-level
2561\file{Makefile} and the \code{-}\code{-prefix} argument to the
Fred Drakee058b4f1998-02-16 06:15:35 +00002562\program{configure} script at build time. The value is available to
Fred Drakeb0a78731998-01-13 18:51:10 +00002563Python code as \code{sys.prefix}. It is only useful on \UNIX{}. See
Guido van Rossum4a944d71997-08-14 20:35:38 +00002564also the next function.
2565\end{cfuncdesc}
2566
Fred Drakec6fa34e1998-04-02 06:47:24 +00002567\begin{cfuncdesc}{char*}{Py_GetExecPrefix}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00002568Return the \emph{exec-prefix} for installed platform-\emph{de}pendent
Guido van Rossum4a944d71997-08-14 20:35:38 +00002569files. This is derived through a number of complicated rules from the
Fred Drakee058b4f1998-02-16 06:15:35 +00002570program name set with \cfunction{Py_SetProgramName()} and some environment
Guido van Rossum4a944d71997-08-14 20:35:38 +00002571variables; for example, if the program name is
2572\code{"/usr/local/bin/python"}, the exec-prefix is
2573\code{"/usr/local"}. The returned string points into static storage;
2574the caller should not modify its value. This corresponds to the
Fred Drakec94d9341998-04-12 02:39:13 +00002575\makevar{exec_prefix} variable in the top-level \file{Makefile} and the
2576\code{-}\code{-exec_prefix} argument to the \program{configure} script
2577at build time. The value is available to Python code as
Fred Drakeb0a78731998-01-13 18:51:10 +00002578\code{sys.exec_prefix}. It is only useful on \UNIX{}.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002579
2580Background: The exec-prefix differs from the prefix when platform
2581dependent files (such as executables and shared libraries) are
2582installed in a different directory tree. In a typical installation,
2583platform dependent files may be installed in the
2584\code{"/usr/local/plat"} subtree while platform independent may be
2585installed in \code{"/usr/local"}.
2586
2587Generally speaking, a platform is a combination of hardware and
2588software families, e.g. Sparc machines running the Solaris 2.x
2589operating system are considered the same platform, but Intel machines
2590running Solaris 2.x are another platform, and Intel machines running
2591Linux are yet another platform. Different major revisions of the same
Fred Drakeb0a78731998-01-13 18:51:10 +00002592operating system generally also form different platforms. Non-\UNIX{}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002593operating systems are a different story; the installation strategies
2594on those systems are so different that the prefix and exec-prefix are
2595meaningless, and set to the empty string. Note that compiled Python
2596bytecode files are platform independent (but not independent from the
2597Python version by which they were compiled!).
2598
Fred Drakee058b4f1998-02-16 06:15:35 +00002599System administrators will know how to configure the \program{mount} or
2600\program{automount} programs to share \code{"/usr/local"} between platforms
Guido van Rossum4a944d71997-08-14 20:35:38 +00002601while having \code{"/usr/local/plat"} be a different filesystem for each
2602platform.
2603\end{cfuncdesc}
2604
Fred Drakec6fa34e1998-04-02 06:47:24 +00002605\begin{cfuncdesc}{char*}{Py_GetProgramFullPath}{}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002606Return the full program name of the Python executable; this is
2607computed as a side-effect of deriving the default module search path
Fred Drakee058b4f1998-02-16 06:15:35 +00002608from the program name (set by \cfunction{Py_SetProgramName()} above). The
Guido van Rossum4a944d71997-08-14 20:35:38 +00002609returned string points into static storage; the caller should not
2610modify its value. The value is available to Python code as
Guido van Rossum42cefd01997-10-05 15:27:29 +00002611\code{sys.executable}.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002612\end{cfuncdesc}
2613
Fred Drakec6fa34e1998-04-02 06:47:24 +00002614\begin{cfuncdesc}{char*}{Py_GetPath}{}
Fred Drake4de05a91998-02-16 14:25:26 +00002615\indexiii{module}{search}{path}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002616Return the default module search path; this is computed from the
Fred Drakee058b4f1998-02-16 06:15:35 +00002617program name (set by \cfunction{Py_SetProgramName()} above) and some
Guido van Rossum4a944d71997-08-14 20:35:38 +00002618environment variables. The returned string consists of a series of
2619directory names separated by a platform dependent delimiter character.
Fred Drakef8830d11998-04-23 14:06:01 +00002620The delimiter character is \character{:} on \UNIX{}, \character{;} on
2621DOS/Windows, and \character{\\n} (the \ASCII{} newline character) on
Fred Drakee5bc4971998-02-12 23:36:49 +00002622Macintosh. The returned string points into static storage; the caller
Guido van Rossum4a944d71997-08-14 20:35:38 +00002623should not modify its value. The value is available to Python code
2624as the list \code{sys.path}, which may be modified to change the
2625future search path for loaded modules.
2626
2627% XXX should give the exact rules
2628\end{cfuncdesc}
2629
Fred Drakec6fa34e1998-04-02 06:47:24 +00002630\begin{cfuncdesc}{const char*}{Py_GetVersion}{}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002631Return the version of this Python interpreter. This is a string that
2632looks something like
2633
Guido van Rossum09270b51997-08-15 18:57:32 +00002634\begin{verbatim}
Fred Drakee058b4f1998-02-16 06:15:35 +00002635"1.5 (#67, Dec 31 1997, 22:34:28) [GCC 2.7.2.2]"
Guido van Rossum09270b51997-08-15 18:57:32 +00002636\end{verbatim}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002637
2638The first word (up to the first space character) is the current Python
2639version; the first three characters are the major and minor version
2640separated by a period. The returned string points into static storage;
2641the caller should not modify its value. The value is available to
2642Python code as the list \code{sys.version}.
2643\end{cfuncdesc}
2644
Fred Drakec6fa34e1998-04-02 06:47:24 +00002645\begin{cfuncdesc}{const char*}{Py_GetPlatform}{}
Fred Drakeb0a78731998-01-13 18:51:10 +00002646Return the platform identifier for the current platform. On \UNIX{},
Guido van Rossum4a944d71997-08-14 20:35:38 +00002647this is formed from the ``official'' name of the operating system,
2648converted to lower case, followed by the major revision number; e.g.,
2649for Solaris 2.x, which is also known as SunOS 5.x, the value is
2650\code{"sunos5"}. On Macintosh, it is \code{"mac"}. On Windows, it
2651is \code{"win"}. The returned string points into static storage;
2652the caller should not modify its value. The value is available to
2653Python code as \code{sys.platform}.
2654\end{cfuncdesc}
2655
Fred Drakec6fa34e1998-04-02 06:47:24 +00002656\begin{cfuncdesc}{const char*}{Py_GetCopyright}{}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002657Return the official copyright string for the current Python version,
2658for example
2659
2660\code{"Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam"}
2661
2662The returned string points into static storage; the caller should not
2663modify its value. The value is available to Python code as the list
2664\code{sys.copyright}.
2665\end{cfuncdesc}
2666
Fred Drakec6fa34e1998-04-02 06:47:24 +00002667\begin{cfuncdesc}{const char*}{Py_GetCompiler}{}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002668Return an indication of the compiler used to build the current Python
Fred Drakee058b4f1998-02-16 06:15:35 +00002669version, in square brackets, for example:
Guido van Rossum4a944d71997-08-14 20:35:38 +00002670
Fred Drakee058b4f1998-02-16 06:15:35 +00002671\begin{verbatim}
2672"[GCC 2.7.2.2]"
2673\end{verbatim}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002674
2675The returned string points into static storage; the caller should not
2676modify its value. The value is available to Python code as part of
2677the variable \code{sys.version}.
2678\end{cfuncdesc}
2679
Fred Drakec6fa34e1998-04-02 06:47:24 +00002680\begin{cfuncdesc}{const char*}{Py_GetBuildInfo}{}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002681Return information about the sequence number and build date and time
2682of the current Python interpreter instance, for example
2683
Guido van Rossum09270b51997-08-15 18:57:32 +00002684\begin{verbatim}
2685"#67, Aug 1 1997, 22:34:28"
2686\end{verbatim}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002687
2688The returned string points into static storage; the caller should not
2689modify its value. The value is available to Python code as part of
2690the variable \code{sys.version}.
2691\end{cfuncdesc}
2692
2693\begin{cfuncdesc}{int}{PySys_SetArgv}{int argc, char **argv}
2694% XXX
2695\end{cfuncdesc}
2696
2697% XXX Other PySys thingies (doesn't really belong in this chapter)
2698
Fred Drakeefd146c1999-02-15 15:30:45 +00002699\section{Thread State and the Global Interpreter Lock
2700 \label{threads}}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002701
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002702The Python interpreter is not fully thread safe. In order to support
2703multi-threaded Python programs, there's a global lock that must be
2704held by the current thread before it can safely access Python objects.
2705Without the lock, even the simplest operations could cause problems in
Fred Drake7baf3d41998-02-20 00:45:52 +00002706a multi-threaded program: for example, when two threads simultaneously
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002707increment the reference count of the same object, the reference count
2708could end up being incremented only once instead of twice.
2709
2710Therefore, the rule exists that only the thread that has acquired the
2711global interpreter lock may operate on Python objects or call Python/C
2712API functions. In order to support multi-threaded Python programs,
Fred Drakee058b4f1998-02-16 06:15:35 +00002713the interpreter regularly release and reacquires the lock --- by
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002714default, every ten bytecode instructions (this can be changed with
Fred Drakee058b4f1998-02-16 06:15:35 +00002715\function{sys.setcheckinterval()}). The lock is also released and
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002716reacquired around potentially blocking I/O operations like reading or
2717writing a file, so that other threads can run while the thread that
2718requests the I/O is waiting for the I/O operation to complete.
2719
2720The Python interpreter needs to keep some bookkeeping information
Fred Drakee058b4f1998-02-16 06:15:35 +00002721separate per thread --- for this it uses a data structure called
Fred Drakef8830d11998-04-23 14:06:01 +00002722\ctype{PyThreadState}. This is new in Python 1.5; in earlier versions,
Fred Drakee058b4f1998-02-16 06:15:35 +00002723such state was stored in global variables, and switching threads could
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002724cause problems. In particular, exception handling is now thread safe,
Fred Drakee058b4f1998-02-16 06:15:35 +00002725when the application uses \function{sys.exc_info()} to access the
2726exception last raised in the current thread.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002727
2728There's one global variable left, however: the pointer to the current
Fred Drakef8830d11998-04-23 14:06:01 +00002729\ctype{PyThreadState} structure. While most thread packages have a way
Fred Drake9d20ac31998-02-16 15:27:08 +00002730to store ``per-thread global data,'' Python's internal platform
Fred Drakee058b4f1998-02-16 06:15:35 +00002731independent thread abstraction doesn't support this yet. Therefore,
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002732the current thread state must be manipulated explicitly.
2733
2734This is easy enough in most cases. Most code manipulating the global
2735interpreter lock has the following simple structure:
2736
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002737\begin{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002738Save the thread state in a local variable.
2739Release the interpreter lock.
2740...Do some blocking I/O operation...
2741Reacquire the interpreter lock.
2742Restore the thread state from the local variable.
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002743\end{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002744
2745This is so common that a pair of macros exists to simplify it:
2746
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002747\begin{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002748Py_BEGIN_ALLOW_THREADS
2749...Do some blocking I/O operation...
2750Py_END_ALLOW_THREADS
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002751\end{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002752
Fred Drakee058b4f1998-02-16 06:15:35 +00002753The \code{Py_BEGIN_ALLOW_THREADS} macro opens a new block and declares
2754a hidden local variable; the \code{Py_END_ALLOW_THREADS} macro closes
2755the block. Another advantage of using these two macros is that when
2756Python is compiled without thread support, they are defined empty,
2757thus saving the thread state and lock manipulations.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002758
2759When thread support is enabled, the block above expands to the
2760following code:
2761
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002762\begin{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002763{
2764 PyThreadState *_save;
2765 _save = PyEval_SaveThread();
2766 ...Do some blocking I/O operation...
2767 PyEval_RestoreThread(_save);
2768}
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002769\end{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002770
2771Using even lower level primitives, we can get roughly the same effect
2772as follows:
2773
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002774\begin{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002775{
2776 PyThreadState *_save;
2777 _save = PyThreadState_Swap(NULL);
2778 PyEval_ReleaseLock();
2779 ...Do some blocking I/O operation...
2780 PyEval_AcquireLock();
2781 PyThreadState_Swap(_save);
2782}
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002783\end{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002784
2785There are some subtle differences; in particular,
Fred Drakee058b4f1998-02-16 06:15:35 +00002786\cfunction{PyEval_RestoreThread()} saves and restores the value of the
Fred Drakef8830d11998-04-23 14:06:01 +00002787global variable \cdata{errno}, since the lock manipulation does not
2788guarantee that \cdata{errno} is left alone. Also, when thread support
Fred Drakee058b4f1998-02-16 06:15:35 +00002789is disabled, \cfunction{PyEval_SaveThread()} and
2790\cfunction{PyEval_RestoreThread()} don't manipulate the lock; in this
2791case, \cfunction{PyEval_ReleaseLock()} and
2792\cfunction{PyEval_AcquireLock()} are not available. This is done so
2793that dynamically loaded extensions compiled with thread support
2794enabled can be loaded by an interpreter that was compiled with
2795disabled thread support.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002796
2797The global interpreter lock is used to protect the pointer to the
2798current thread state. When releasing the lock and saving the thread
2799state, the current thread state pointer must be retrieved before the
2800lock is released (since another thread could immediately acquire the
2801lock and store its own thread state in the global variable).
2802Reversely, when acquiring the lock and restoring the thread state, the
2803lock must be acquired before storing the thread state pointer.
2804
2805Why am I going on with so much detail about this? Because when
Fred Drakeb0a78731998-01-13 18:51:10 +00002806threads are created from \C{}, they don't have the global interpreter
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002807lock, nor is there a thread state data structure for them. Such
2808threads must bootstrap themselves into existence, by first creating a
2809thread state data structure, then acquiring the lock, and finally
2810storing their thread state pointer, before they can start using the
2811Python/C API. When they are done, they should reset the thread state
2812pointer, release the lock, and finally free their thread state data
2813structure.
2814
2815When creating a thread data structure, you need to provide an
2816interpreter state data structure. The interpreter state data
2817structure hold global data that is shared by all threads in an
2818interpreter, for example the module administration
2819(\code{sys.modules}). Depending on your needs, you can either create
2820a new interpreter state data structure, or share the interpreter state
2821data structure used by the Python main thread (to access the latter,
Fred Drakef8830d11998-04-23 14:06:01 +00002822you must obtain the thread state and access its \member{interp} member;
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002823this must be done by a thread that is created by Python or by the main
2824thread after Python is initialized).
2825
2826XXX More?
2827
2828\begin{ctypedesc}{PyInterpreterState}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002829This data structure represents the state shared by a number of
2830cooperating threads. Threads belonging to the same interpreter
2831share their module administration and a few other internal items.
2832There are no public members in this structure.
2833
2834Threads belonging to different interpreters initially share nothing,
2835except process state like available memory, open file descriptors and
2836such. The global interpreter lock is also shared by all threads,
2837regardless of to which interpreter they belong.
2838\end{ctypedesc}
2839
2840\begin{ctypedesc}{PyThreadState}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002841This data structure represents the state of a single thread. The only
Fred Drakef8830d11998-04-23 14:06:01 +00002842public data member is \ctype{PyInterpreterState *}\member{interp},
2843which points to this thread's interpreter state.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002844\end{ctypedesc}
2845
2846\begin{cfuncdesc}{void}{PyEval_InitThreads}{}
2847Initialize and acquire the global interpreter lock. It should be
2848called in the main thread before creating a second thread or engaging
Fred Drakee058b4f1998-02-16 06:15:35 +00002849in any other thread operations such as
2850\cfunction{PyEval_ReleaseLock()} or
2851\code{PyEval_ReleaseThread(\var{tstate})}. It is not needed before
2852calling \cfunction{PyEval_SaveThread()} or
2853\cfunction{PyEval_RestoreThread()}.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002854
2855This is a no-op when called for a second time. It is safe to call
Fred Drakee058b4f1998-02-16 06:15:35 +00002856this function before calling \cfunction{Py_Initialize()}.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002857
2858When only the main thread exists, no lock operations are needed. This
2859is a common situation (most Python programs do not use threads), and
2860the lock operations slow the interpreter down a bit. Therefore, the
2861lock is not created initially. This situation is equivalent to having
2862acquired the lock: when there is only a single thread, all object
2863accesses are safe. Therefore, when this function initializes the
Fred Drake4de05a91998-02-16 14:25:26 +00002864lock, it also acquires it. Before the Python
2865\module{thread}\refbimodindex{thread} module creates a new thread,
2866knowing that either it has the lock or the lock hasn't been created
2867yet, it calls \cfunction{PyEval_InitThreads()}. When this call
2868returns, it is guaranteed that the lock has been created and that it
2869has acquired it.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002870
2871It is \strong{not} safe to call this function when it is unknown which
2872thread (if any) currently has the global interpreter lock.
2873
2874This function is not available when thread support is disabled at
2875compile time.
2876\end{cfuncdesc}
2877
Guido van Rossum4a944d71997-08-14 20:35:38 +00002878\begin{cfuncdesc}{void}{PyEval_AcquireLock}{}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002879Acquire the global interpreter lock. The lock must have been created
2880earlier. If this thread already has the lock, a deadlock ensues.
2881This function is not available when thread support is disabled at
2882compile time.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002883\end{cfuncdesc}
2884
2885\begin{cfuncdesc}{void}{PyEval_ReleaseLock}{}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002886Release the global interpreter lock. The lock must have been created
2887earlier. This function is not available when thread support is
Fred Drakee058b4f1998-02-16 06:15:35 +00002888disabled at compile time.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002889\end{cfuncdesc}
2890
2891\begin{cfuncdesc}{void}{PyEval_AcquireThread}{PyThreadState *tstate}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002892Acquire the global interpreter lock and then set the current thread
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002893state to \var{tstate}, which should not be \NULL{}. The lock must
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002894have been created earlier. If this thread already has the lock,
2895deadlock ensues. This function is not available when thread support
Fred Drakee058b4f1998-02-16 06:15:35 +00002896is disabled at compile time.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002897\end{cfuncdesc}
2898
2899\begin{cfuncdesc}{void}{PyEval_ReleaseThread}{PyThreadState *tstate}
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002900Reset the current thread state to \NULL{} and release the global
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002901interpreter lock. The lock must have been created earlier and must be
2902held by the current thread. The \var{tstate} argument, which must not
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002903be \NULL{}, is only used to check that it represents the current
Fred Drakee058b4f1998-02-16 06:15:35 +00002904thread state --- if it isn't, a fatal error is reported. This
2905function is not available when thread support is disabled at compile
2906time.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002907\end{cfuncdesc}
2908
Fred Drakec6fa34e1998-04-02 06:47:24 +00002909\begin{cfuncdesc}{PyThreadState*}{PyEval_SaveThread}{}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002910Release the interpreter lock (if it has been created and thread
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002911support is enabled) and reset the thread state to \NULL{},
2912returning the previous thread state (which is not \NULL{}). If
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002913the lock has been created, the current thread must have acquired it.
2914(This function is available even when thread support is disabled at
2915compile time.)
Guido van Rossum4a944d71997-08-14 20:35:38 +00002916\end{cfuncdesc}
2917
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002918\begin{cfuncdesc}{void}{PyEval_RestoreThread}{PyThreadState *tstate}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002919Acquire the interpreter lock (if it has been created and thread
2920support is enabled) and set the thread state to \var{tstate}, which
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002921must not be \NULL{}. If the lock has been created, the current
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002922thread must not have acquired it, otherwise deadlock ensues. (This
2923function is available even when thread support is disabled at compile
2924time.)
Guido van Rossum4a944d71997-08-14 20:35:38 +00002925\end{cfuncdesc}
2926
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002927% XXX These aren't really C types, but the ctypedesc macro is the simplest!
2928\begin{ctypedesc}{Py_BEGIN_ALLOW_THREADS}
2929This macro expands to
Fred Drakee058b4f1998-02-16 06:15:35 +00002930\samp{\{ PyThreadState *_save; _save = PyEval_SaveThread();}.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002931Note that it contains an opening brace; it must be matched with a
2932following \code{Py_END_ALLOW_THREADS} macro. See above for further
2933discussion of this macro. It is a no-op when thread support is
2934disabled at compile time.
2935\end{ctypedesc}
2936
2937\begin{ctypedesc}{Py_END_ALLOW_THREADS}
2938This macro expands to
Fred Drakee058b4f1998-02-16 06:15:35 +00002939\samp{PyEval_RestoreThread(_save); \}}.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002940Note that it contains a closing brace; it must be matched with an
2941earlier \code{Py_BEGIN_ALLOW_THREADS} macro. See above for further
2942discussion of this macro. It is a no-op when thread support is
2943disabled at compile time.
2944\end{ctypedesc}
2945
2946\begin{ctypedesc}{Py_BEGIN_BLOCK_THREADS}
Fred Drakee058b4f1998-02-16 06:15:35 +00002947This macro expands to \samp{PyEval_RestoreThread(_save);} i.e. it
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002948is equivalent to \code{Py_END_ALLOW_THREADS} without the closing
2949brace. It is a no-op when thread support is disabled at compile
2950time.
2951\end{ctypedesc}
2952
2953\begin{ctypedesc}{Py_BEGIN_UNBLOCK_THREADS}
Fred Drakee058b4f1998-02-16 06:15:35 +00002954This macro expands to \samp{_save = PyEval_SaveThread();} i.e. it is
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002955equivalent to \code{Py_BEGIN_ALLOW_THREADS} without the opening brace
2956and variable declaration. It is a no-op when thread support is
2957disabled at compile time.
2958\end{ctypedesc}
2959
2960All of the following functions are only available when thread support
2961is enabled at compile time, and must be called only when the
Fred Drake9d20ac31998-02-16 15:27:08 +00002962interpreter lock has been created.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002963
Fred Drakec6fa34e1998-04-02 06:47:24 +00002964\begin{cfuncdesc}{PyInterpreterState*}{PyInterpreterState_New}{}
Guido van Rossumed9dcc11998-08-07 18:28:03 +00002965Create a new interpreter state object. The interpreter lock need not
2966be held, but may be held if it is necessary to serialize calls to this
2967function.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002968\end{cfuncdesc}
2969
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002970\begin{cfuncdesc}{void}{PyInterpreterState_Clear}{PyInterpreterState *interp}
2971Reset all information in an interpreter state object. The interpreter
2972lock must be held.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002973\end{cfuncdesc}
2974
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002975\begin{cfuncdesc}{void}{PyInterpreterState_Delete}{PyInterpreterState *interp}
2976Destroy an interpreter state object. The interpreter lock need not be
2977held. The interpreter state must have been reset with a previous
Fred Drakee058b4f1998-02-16 06:15:35 +00002978call to \cfunction{PyInterpreterState_Clear()}.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002979\end{cfuncdesc}
2980
Fred Drakec6fa34e1998-04-02 06:47:24 +00002981\begin{cfuncdesc}{PyThreadState*}{PyThreadState_New}{PyInterpreterState *interp}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002982Create a new thread state object belonging to the given interpreter
Guido van Rossumed9dcc11998-08-07 18:28:03 +00002983object. The interpreter lock need not be held, but may be held if it
2984is necessary to serialize calls to this function.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002985\end{cfuncdesc}
2986
2987\begin{cfuncdesc}{void}{PyThreadState_Clear}{PyThreadState *tstate}
2988Reset all information in a thread state object. The interpreter lock
2989must be held.
2990\end{cfuncdesc}
2991
2992\begin{cfuncdesc}{void}{PyThreadState_Delete}{PyThreadState *tstate}
2993Destroy a thread state object. The interpreter lock need not be
2994held. The thread state must have been reset with a previous
Fred Drakee058b4f1998-02-16 06:15:35 +00002995call to \cfunction{PyThreadState_Clear()}.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002996\end{cfuncdesc}
2997
Fred Drakec6fa34e1998-04-02 06:47:24 +00002998\begin{cfuncdesc}{PyThreadState*}{PyThreadState_Get}{}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002999Return the current thread state. The interpreter lock must be held.
Guido van Rossum580aa8d1997-11-25 15:34:51 +00003000When the current thread state is \NULL{}, this issues a fatal
Guido van Rossum5b8a5231997-12-30 04:38:44 +00003001error (so that the caller needn't check for \NULL{}).
Guido van Rossumc44d3d61997-10-06 05:10:47 +00003002\end{cfuncdesc}
3003
Fred Drakec6fa34e1998-04-02 06:47:24 +00003004\begin{cfuncdesc}{PyThreadState*}{PyThreadState_Swap}{PyThreadState *tstate}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00003005Swap the current thread state with the thread state given by the
Guido van Rossum580aa8d1997-11-25 15:34:51 +00003006argument \var{tstate}, which may be \NULL{}. The interpreter lock
Guido van Rossumc44d3d61997-10-06 05:10:47 +00003007must be held.
3008\end{cfuncdesc}
3009
3010
Fred Drakeefd146c1999-02-15 15:30:45 +00003011\chapter{Defining New Object Types \label{newTypes}}
Guido van Rossum4a944d71997-08-14 20:35:38 +00003012
Fred Drakec6fa34e1998-04-02 06:47:24 +00003013\begin{cfuncdesc}{PyObject*}{_PyObject_New}{PyTypeObject *type}
Fred Drakee058b4f1998-02-16 06:15:35 +00003014\end{cfuncdesc}
3015
Fred Drakec6fa34e1998-04-02 06:47:24 +00003016\begin{cfuncdesc}{PyObject*}{_PyObject_NewVar}{PyTypeObject *type, int size}
Fred Drakee058b4f1998-02-16 06:15:35 +00003017\end{cfuncdesc}
3018
3019\begin{cfuncdesc}{TYPE}{_PyObject_NEW}{TYPE, PyTypeObject *}
3020\end{cfuncdesc}
3021
3022\begin{cfuncdesc}{TYPE}{_PyObject_NEW_VAR}{TYPE, PyTypeObject *, int size}
3023\end{cfuncdesc}
3024
Guido van Rossum3c4378b1998-04-14 20:21:10 +00003025Py_InitModule (!!!)
3026
3027PyArg_ParseTupleAndKeywords, PyArg_ParseTuple, PyArg_Parse
3028
3029Py_BuildValue
Guido van Rossumae110af1997-05-22 20:11:52 +00003030
3031PyObject, PyVarObject
3032
3033PyObject_HEAD, PyObject_HEAD_INIT, PyObject_VAR_HEAD
3034
3035Typedefs:
3036unaryfunc, binaryfunc, ternaryfunc, inquiry, coercion, intargfunc,
3037intintargfunc, intobjargproc, intintobjargproc, objobjargproc,
3038getreadbufferproc, getwritebufferproc, getsegcountproc,
3039destructor, printfunc, getattrfunc, getattrofunc, setattrfunc,
3040setattrofunc, cmpfunc, reprfunc, hashfunc
3041
3042PyNumberMethods
3043
3044PySequenceMethods
3045
3046PyMappingMethods
3047
3048PyBufferProcs
3049
3050PyTypeObject
3051
3052DL_IMPORT
3053
3054PyType_Type
3055
3056Py*_Check
3057
3058Py_None, _Py_NoneStruct
3059
Guido van Rossumae110af1997-05-22 20:11:52 +00003060
Fred Drakeefd146c1999-02-15 15:30:45 +00003061\chapter{Debugging \label{debugging}}
Guido van Rossumae110af1997-05-22 20:11:52 +00003062
Fred Drakee5bf8b21998-02-12 21:22:28 +00003063XXX Explain Py_DEBUG, Py_TRACE_REFS, Py_REF_DEBUG.
Guido van Rossum5b8a5231997-12-30 04:38:44 +00003064
3065
Fred Drakef3aa0e01998-03-17 06:23:13 +00003066\input{api.ind} % Index -- must be last
Guido van Rossum9231c8f1997-05-15 21:43:21 +00003067
3068\end{document}