blob: a0e6bc4faa6f802b726c1439433a258e7538ece9 [file] [log] [blame]
Fred Drakedca87921998-01-13 16:53:23 +00001\documentclass[twoside,openright]{report}
Fred Drake1f8449a1998-01-09 05:36:43 +00002\usepackage{myformat}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00003
Guido van Rossum9faf4c51997-10-07 14:38:54 +00004\title{Python/C API Reference Manual}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00005
6\input{boilerplate}
7
8\makeindex % tell \index to actually write the .idx file
9
10
11\begin{document}
12
Guido van Rossum9231c8f1997-05-15 21:43:21 +000013\maketitle
14
15\input{copyright}
16
17\begin{abstract}
18
19\noindent
Fred Drakee058b4f1998-02-16 06:15:35 +000020This manual documents the API used by \C{} (or \Cpp{}) programmers who
21want to write extension modules or embed Python. It is a companion to
22\emph{Extending and Embedding the Python Interpreter}, which describes
Guido van Rossum9231c8f1997-05-15 21:43:21 +000023the general principles of extension writing but does not document the
24API functions in detail.
25
Guido van Rossum5b8a5231997-12-30 04:38:44 +000026\strong{Warning:} The current version of this document is incomplete.
27I hope that it is nevertheless useful. I will continue to work on it,
28and release new versions from time to time, independent from Python
29source code releases.
30
Guido van Rossum9231c8f1997-05-15 21:43:21 +000031\end{abstract}
32
Fred Drake4d4f9e71998-01-13 22:25:02 +000033\tableofcontents
Guido van Rossum9231c8f1997-05-15 21:43:21 +000034
Guido van Rossum5060b3b1997-08-17 18:02:23 +000035% XXX Consider moving all this back to ext.tex and giving api.tex
36% XXX a *really* short intro only.
Guido van Rossum9231c8f1997-05-15 21:43:21 +000037
38\chapter{Introduction}
39
Fred Drakeb0a78731998-01-13 18:51:10 +000040The Application Programmer's Interface to Python gives \C{} and \Cpp{}
Guido van Rossum59a61351997-08-14 20:34:33 +000041programmers access to the Python interpreter at a variety of levels.
Fred Drakeb0a78731998-01-13 18:51:10 +000042The API is equally usable from \Cpp{}, but for brevity it is generally
43referred to as the Python/\C{} API. There are two fundamentally
Fred Drakee058b4f1998-02-16 06:15:35 +000044different reasons for using the Python/\C{} API. The first reason is
45to write \emph{extension modules} for specific purposes; these are
46\C{} modules that extend the Python interpreter. This is probably the
47most common use. The second reason is to use Python as a component in
48a larger application; this technique is generally referred to as
49\dfn{embedding} Python in an application.
Guido van Rossum59a61351997-08-14 20:34:33 +000050
Guido van Rossum4a944d71997-08-14 20:35:38 +000051Writing an extension module is a relatively well-understood process,
52where a ``cookbook'' approach works well. There are several tools
53that automate the process to some extent. While people have embedded
54Python in other applications since its early existence, the process of
55embedding Python is less straightforward that writing an extension.
56Python 1.5 introduces a number of new API functions as well as some
57changes to the build process that make embedding much simpler.
Fred Drakee058b4f1998-02-16 06:15:35 +000058This manual describes the \version\ state of affair.
Guido van Rossum59a61351997-08-14 20:34:33 +000059% XXX Eventually, take the historical notes out
60
Guido van Rossum4a944d71997-08-14 20:35:38 +000061Many API functions are useful independent of whether you're embedding
62or extending Python; moreover, most applications that embed Python
63will need to provide a custom extension as well, so it's probably a
64good idea to become familiar with writing an extension before
Guido van Rossum59a61351997-08-14 20:34:33 +000065attempting to embed Python in a real application.
66
Guido van Rossum580aa8d1997-11-25 15:34:51 +000067\section{Include Files}
68
69All function, type and macro definitions needed to use the Python/C
70API are included in your code by the following line:
71
Fred Drakee058b4f1998-02-16 06:15:35 +000072\begin{verbatim}
73#include "Python.h"
74\end{verbatim}
Guido van Rossum580aa8d1997-11-25 15:34:51 +000075
Fred Drakee058b4f1998-02-16 06:15:35 +000076This implies inclusion of the following standard headers:
77\code{<stdio.h>}, \code{<string.h>}, \code{<errno.h>}, and
78\code{<stdlib.h>} (if available).
Guido van Rossum580aa8d1997-11-25 15:34:51 +000079
80All user visible names defined by Python.h (except those defined by
Fred Drakee058b4f1998-02-16 06:15:35 +000081the included standard headers) have one of the prefixes \samp{Py} or
82\samp{_Py}. Names beginning with \samp{_Py} are for internal use
Guido van Rossum580aa8d1997-11-25 15:34:51 +000083only. Structure member names do not have a reserved prefix.
84
Fred Drakee058b4f1998-02-16 06:15:35 +000085\strong{Important:} user code should never define names that begin
86with \samp{Py} or \samp{_Py}. This confuses the reader, and
87jeopardizes the portability of the user code to future Python
88versions, which may define additional names beginning with one of
89these prefixes.
Guido van Rossum580aa8d1997-11-25 15:34:51 +000090
Guido van Rossum59a61351997-08-14 20:34:33 +000091\section{Objects, Types and Reference Counts}
92
Guido van Rossum580aa8d1997-11-25 15:34:51 +000093Most Python/C API functions have one or more arguments as well as a
94return value of type \code{PyObject *}. This type is a pointer
Fred Drakee058b4f1998-02-16 06:15:35 +000095to an opaque data type representing an arbitrary Python
Guido van Rossum580aa8d1997-11-25 15:34:51 +000096object. Since all Python object types are treated the same way by the
97Python language in most situations (e.g., assignments, scope rules,
98and argument passing), it is only fitting that they should be
Fred Drakeb0a78731998-01-13 18:51:10 +000099represented by a single \C{} type. All Python objects live on the heap:
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000100you never declare an automatic or static variable of type
Guido van Rossum4a944d71997-08-14 20:35:38 +0000101\code{PyObject}, only pointer variables of type \code{PyObject *} can
Guido van Rossum59a61351997-08-14 20:34:33 +0000102be declared.
103
Fred Drakee058b4f1998-02-16 06:15:35 +0000104All Python objects (even Python integers) have a \dfn{type} and a
105\dfn{reference count}. An object's type determines what kind of object
Guido van Rossum4a944d71997-08-14 20:35:38 +0000106it is (e.g., an integer, a list, or a user-defined function; there are
Fred Drakee058b4f1998-02-16 06:15:35 +0000107many more as explained in the \emph{Python Reference Manual}). For
Guido van Rossum4a944d71997-08-14 20:35:38 +0000108each of the well-known types there is a macro to check whether an
Fred Drakee058b4f1998-02-16 06:15:35 +0000109object is of that type; for instance, \samp{PyList_Check(\var{a})} is
110true iff the object pointed to by \var{a} is a Python list.
Guido van Rossum59a61351997-08-14 20:34:33 +0000111
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000112\subsection{Reference Counts}
113
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000114The reference count is important because today's computers have a
Guido van Rossum4a944d71997-08-14 20:35:38 +0000115finite (and often severly limited) memory size; it counts how many
116different places there are that have a reference to an object. Such a
Fred Drakeb0a78731998-01-13 18:51:10 +0000117place could be another object, or a global (or static) \C{} variable, or
118a local variable in some \C{} function. When an object's reference count
Guido van Rossum4a944d71997-08-14 20:35:38 +0000119becomes zero, the object is deallocated. If it contains references to
120other objects, their reference count is decremented. Those other
121objects may be deallocated in turn, if this decrement makes their
122reference count become zero, and so on. (There's an obvious problem
123with objects that reference each other here; for now, the solution is
Guido van Rossum59a61351997-08-14 20:34:33 +0000124``don't do that''.)
125
Guido van Rossum4a944d71997-08-14 20:35:38 +0000126Reference counts are always manipulated explicitly. The normal way is
Fred Drakee058b4f1998-02-16 06:15:35 +0000127to use the macro \cfunction{Py_INCREF()} to increment an object's
128reference count by one, and \cfunction{Py_DECREF()} to decrement it by
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000129one. The decref macro is considerably more complex than the incref one,
Guido van Rossum4a944d71997-08-14 20:35:38 +0000130since it must check whether the reference count becomes zero and then
131cause the object's deallocator, which is a function pointer contained
132in the object's type structure. The type-specific deallocator takes
133care of decrementing the reference counts for other objects contained
134in the object, and so on, if this is a compound object type such as a
135list. There's no chance that the reference count can overflow; at
136least as many bits are used to hold the reference count as there are
137distinct memory locations in virtual memory (assuming
138\code{sizeof(long) >= sizeof(char *)}). Thus, the reference count
Guido van Rossum59a61351997-08-14 20:34:33 +0000139increment is a simple operation.
140
Guido van Rossum4a944d71997-08-14 20:35:38 +0000141It is not necessary to increment an object's reference count for every
142local variable that contains a pointer to an object. In theory, the
Fred Drakee058b4f1998-02-16 06:15:35 +0000143object's reference count goes up by one when the variable is made to
Guido van Rossum4a944d71997-08-14 20:35:38 +0000144point to it and it goes down by one when the variable goes out of
145scope. However, these two cancel each other out, so at the end the
146reference count hasn't changed. The only real reason to use the
147reference count is to prevent the object from being deallocated as
148long as our variable is pointing to it. If we know that there is at
149least one other reference to the object that lives at least as long as
150our variable, there is no need to increment the reference count
151temporarily. An important situation where this arises is in objects
Fred Drakeb0a78731998-01-13 18:51:10 +0000152that are passed as arguments to \C{} functions in an extension module
Guido van Rossum4a944d71997-08-14 20:35:38 +0000153that are called from Python; the call mechanism guarantees to hold a
Guido van Rossum59a61351997-08-14 20:34:33 +0000154reference to every argument for the duration of the call.
155
Fred Drakee058b4f1998-02-16 06:15:35 +0000156However, a common pitfall is to extract an object from a list and
157hold on to it for a while without incrementing its reference count.
158Some other operation might conceivably remove the object from the
159list, decrementing its reference count and possible deallocating it.
160The real danger is that innocent-looking operations may invoke
161arbitrary Python code which could do this; there is a code path which
162allows control to flow back to the user from a \cfunction{Py_DECREF()},
163so almost any operation is potentially dangerous.
Guido van Rossum59a61351997-08-14 20:34:33 +0000164
Guido van Rossum4a944d71997-08-14 20:35:38 +0000165A safe approach is to always use the generic operations (functions
Fred Drakee058b4f1998-02-16 06:15:35 +0000166whose name begins with \samp{PyObject_}, \samp{PyNumber_},
167\samp{PySequence_} or \samp{PyMapping_}). These operations always
Guido van Rossum4a944d71997-08-14 20:35:38 +0000168increment the reference count of the object they return. This leaves
Fred Drakee058b4f1998-02-16 06:15:35 +0000169the caller with the responsibility to call \cfunction{Py_DECREF()}
170when they are done with the result; this soon becomes second nature.
Guido van Rossum59a61351997-08-14 20:34:33 +0000171
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000172\subsubsection{Reference Count Details}
173
174The reference count behavior of functions in the Python/C API is best
175expelained in terms of \emph{ownership of references}. Note that we
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000176talk of owning references, never of owning objects; objects are always
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000177shared! When a function owns a reference, it has to dispose of it
Fred Drakee058b4f1998-02-16 06:15:35 +0000178properly --- either by passing ownership on (usually to its caller) or
179by calling \cfunction{Py_DECREF()} or \cfunction{Py_XDECREF()}. When
180a function passes ownership of a reference on to its caller, the
181caller is said to receive a \emph{new} reference. When no ownership
182is transferred, the caller is said to \emph{borrow} the reference.
183Nothing needs to be done for a borrowed reference.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000184
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000185Conversely, when calling a function passes it a reference to an
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000186object, there are two possibilities: the function \emph{steals} a
187reference to the object, or it does not. Few functions steal
Fred Drakee058b4f1998-02-16 06:15:35 +0000188references; the two notable exceptions are
189\cfunction{PyList_SetItem()} and \cfunction{PyTuple_SetItem()}, which
190steal a reference to the item (but not to the tuple or list into which
191the item it put!). These functions were designed to steal a reference
192because of a common idiom for populating a tuple or list with newly
193created objects; for example, the code to create the tuple \code{(1,
1942, "three")} could look like this (forgetting about error handling for
195the moment; a better way to code this is shown below anyway):
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000196
197\begin{verbatim}
198PyObject *t;
199t = PyTuple_New(3);
200PyTuple_SetItem(t, 0, PyInt_FromLong(1L));
201PyTuple_SetItem(t, 1, PyInt_FromLong(2L));
202PyTuple_SetItem(t, 2, PyString_FromString("three"));
203\end{verbatim}
204
Fred Drakee058b4f1998-02-16 06:15:35 +0000205Incidentally, \cfunction{PyTuple_SetItem()} is the \emph{only} way to
206set tuple items; \cfunction{PySequence_SetItem()} and
207\cfunction{PyObject_SetItem()} refuse to do this since tuples are an
208immutable data type. You should only use
209\cfunction{PyTuple_SetItem()} for tuples that you are creating
Guido van Rossum5b8a5231997-12-30 04:38:44 +0000210yourself.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000211
212Equivalent code for populating a list can be written using
Fred Drakee058b4f1998-02-16 06:15:35 +0000213\cfunction{PyList_New()} and \cfunction{PyList_SetItem()}. Such code
214can also use \cfunction{PySequence_SetItem()}; this illustrates the
215difference between the two (the extra \cfunction{Py_DECREF()} calls):
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000216
217\begin{verbatim}
218PyObject *l, *x;
219l = PyList_New(3);
220x = PyInt_FromLong(1L);
Guido van Rossum5b8a5231997-12-30 04:38:44 +0000221PySequence_SetItem(l, 0, x); Py_DECREF(x);
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000222x = PyInt_FromLong(2L);
Guido van Rossum5b8a5231997-12-30 04:38:44 +0000223PySequence_SetItem(l, 1, x); Py_DECREF(x);
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000224x = PyString_FromString("three");
Guido van Rossum5b8a5231997-12-30 04:38:44 +0000225PySequence_SetItem(l, 2, x); Py_DECREF(x);
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000226\end{verbatim}
227
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000228You might find it strange that the ``recommended'' approach takes more
229code. However, in practice, you will rarely use these ways of
230creating and populating a tuple or list. There's a generic function,
Fred Drakee058b4f1998-02-16 06:15:35 +0000231\cfunction{Py_BuildValue()}, that can create most common objects from
232\C{} values, directed by a \dfn{format string}. For example, the
233above two blocks of code could be replaced by the following (which
234also takes care of the error checking):
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000235
236\begin{verbatim}
237PyObject *t, *l;
238t = Py_BuildValue("(iis)", 1, 2, "three");
239l = Py_BuildValue("[iis]", 1, 2, "three");
240\end{verbatim}
241
Fred Drakee058b4f1998-02-16 06:15:35 +0000242It is much more common to use \cfunction{PyObject_SetItem()} and
243friends with items whose references you are only borrowing, like
244arguments that were passed in to the function you are writing. In
245that case, their behaviour regarding reference counts is much saner,
246since you don't have to increment a reference count so you can give a
247reference away (``have it be stolen''). For example, this function
248sets all items of a list (actually, any mutable sequence) to a given
249item:
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000250
251\begin{verbatim}
252int set_all(PyObject *target, PyObject *item)
253{
254 int i, n;
255 n = PyObject_Length(target);
256 if (n < 0)
257 return -1;
258 for (i = 0; i < n; i++) {
259 if (PyObject_SetItem(target, i, item) < 0)
260 return -1;
261 }
262 return 0;
263}
264\end{verbatim}
265
266The situation is slightly different for function return values.
267While passing a reference to most functions does not change your
268ownership responsibilities for that reference, many functions that
269return a referece to an object give you ownership of the reference.
270The reason is simple: in many cases, the returned object is created
271on the fly, and the reference you get is the only reference to the
Fred Drakee058b4f1998-02-16 06:15:35 +0000272object. Therefore, the generic functions that return object
273references, like \cfunction{PyObject_GetItem()} and
274\cfunction{PySequence_GetItem()}, always return a new reference (i.e.,
275the caller becomes the owner of the reference).
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000276
277It is important to realize that whether you own a reference returned
Fred Drakee058b4f1998-02-16 06:15:35 +0000278by a function depends on which function you call only --- \emph{the
279plumage} (i.e., the type of the type of the object passed as an
280argument to the function) \emph{doesn't enter into it!} Thus, if you
281extract an item from a list using \cfunction{PyList_GetItem()}, you
282don't own the reference --- but if you obtain the same item from the
283same list using \cfunction{PySequence_GetItem()} (which happens to
284take exactly the same arguments), you do own a reference to the
285returned object.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000286
Fred Drakee058b4f1998-02-16 06:15:35 +0000287Here is an example of how you could write a function that computes the
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000288sum of the items in a list of integers; once using
Fred Drakee058b4f1998-02-16 06:15:35 +0000289\cfunction{PyList_GetItem()}, once using
290\cfunction{PySequence_GetItem()}.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000291
292\begin{verbatim}
293long sum_list(PyObject *list)
294{
295 int i, n;
296 long total = 0;
297 PyObject *item;
298 n = PyList_Size(list);
299 if (n < 0)
300 return -1; /* Not a list */
301 for (i = 0; i < n; i++) {
302 item = PyList_GetItem(list, i); /* Can't fail */
303 if (!PyInt_Check(item)) continue; /* Skip non-integers */
304 total += PyInt_AsLong(item);
305 }
306 return total;
307}
308\end{verbatim}
309
310\begin{verbatim}
311long sum_sequence(PyObject *sequence)
312{
313 int i, n;
314 long total = 0;
315 PyObject *item;
316 n = PyObject_Size(list);
317 if (n < 0)
318 return -1; /* Has no length */
319 for (i = 0; i < n; i++) {
320 item = PySequence_GetItem(list, i);
321 if (item == NULL)
322 return -1; /* Not a sequence, or other failure */
323 if (PyInt_Check(item))
324 total += PyInt_AsLong(item);
Guido van Rossum5b8a5231997-12-30 04:38:44 +0000325 Py_DECREF(item); /* Discard reference ownership */
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000326 }
327 return total;
328}
329\end{verbatim}
330
331\subsection{Types}
332
333There are few other data types that play a significant role in
Fred Drakeb0a78731998-01-13 18:51:10 +0000334the Python/C API; most are simple \C{} types such as \code{int},
Guido van Rossum4a944d71997-08-14 20:35:38 +0000335\code{long}, \code{double} and \code{char *}. A few structure types
336are used to describe static tables used to list the functions exported
337by a module or the data attributes of a new object type. These will
Guido van Rossum59a61351997-08-14 20:34:33 +0000338be discussed together with the functions that use them.
339
340\section{Exceptions}
341
Guido van Rossum4a944d71997-08-14 20:35:38 +0000342The Python programmer only needs to deal with exceptions if specific
343error handling is required; unhandled exceptions are automatically
344propagated to the caller, then to the caller's caller, and so on, till
345they reach the top-level interpreter, where they are reported to the
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000346user accompanied by a stack traceback.
Guido van Rossum59a61351997-08-14 20:34:33 +0000347
Fred Drakeb0a78731998-01-13 18:51:10 +0000348For \C{} programmers, however, error checking always has to be explicit.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000349All functions in the Python/C API can raise exceptions, unless an
350explicit claim is made otherwise in a function's documentation. In
351general, when a function encounters an error, it sets an exception,
352discards any object references that it owns, and returns an
Fred Drakee058b4f1998-02-16 06:15:35 +0000353error indicator --- usually \NULL{} or \code{-1}. A few functions
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000354return a Boolean true/false result, with false indicating an error.
355Very few functions return no explicit error indicator or have an
356ambiguous return value, and require explicit testing for errors with
Fred Drakee058b4f1998-02-16 06:15:35 +0000357\cfunction{PyErr_Occurred()}.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000358
359Exception state is maintained in per-thread storage (this is
360equivalent to using global storage in an unthreaded application). A
Fred Drakee058b4f1998-02-16 06:15:35 +0000361thread can be on one of two states: an exception has occurred, or not.
362The function \cfunction{PyErr_Occurred()} can be used to check for
363this: it returns a borrowed reference to the exception type object
364when an exception has occurred, and \NULL{} otherwise. There are a
365number of functions to set the exception state:
366\cfunction{PyErr_SetString()} is the most common (though not the most
367general) function to set the exception state, and
368\cfunction{PyErr_Clear()} clears the exception state.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000369
370The full exception state consists of three objects (all of which can
Fred Drakee058b4f1998-02-16 06:15:35 +0000371be \NULL{}): the exception type, the corresponding exception
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000372value, and the traceback. These have the same meanings as the Python
373object \code{sys.exc_type}, \code{sys.exc_value},
374\code{sys.exc_traceback}; however, they are not the same: the Python
375objects represent the last exception being handled by a Python
Fred Drakee058b4f1998-02-16 06:15:35 +0000376\keyword{try} \ldots\ \keyword{except} statement, while the \C{} level
377exception state only exists while an exception is being passed on
378between \C{} functions until it reaches the Python interpreter, which
379takes care of transferring it to \code{sys.exc_type} and friends.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000380
381(Note that starting with Python 1.5, the preferred, thread-safe way to
382access the exception state from Python code is to call the function
Fred Drakee058b4f1998-02-16 06:15:35 +0000383\function{sys.exc_info()}, which returns the per-thread exception state
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000384for Python code. Also, the semantics of both ways to access the
385exception state have changed so that a function which catches an
386exception will save and restore its thread's exception state so as to
387preserve the exception state of its caller. This prevents common bugs
388in exception handling code caused by an innocent-looking function
389overwriting the exception being handled; it also reduces the often
390unwanted lifetime extension for objects that are referenced by the
391stack frames in the traceback.)
392
393As a general principle, a function that calls another function to
394perform some task should check whether the called function raised an
395exception, and if so, pass the exception state on to its caller. It
Fred Drakee058b4f1998-02-16 06:15:35 +0000396should discard any object references that it owns, and returns an
397error indicator, but it should \emph{not} set another exception ---
398that would overwrite the exception that was just raised, and lose
399important information about the exact cause of the error.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000400
401A simple example of detecting exceptions and passing them on is shown
Fred Drakee058b4f1998-02-16 06:15:35 +0000402in the \cfunction{sum_sequence()} example above. It so happens that
403that example doesn't need to clean up any owned references when it
404detects an error. The following example function shows some error
405cleanup. First, to remind you why you like Python, we show the
406equivalent Python code:
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000407
408\begin{verbatim}
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000409def incr_item(dict, key):
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000410 try:
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000411 item = dict[key]
412 except KeyError:
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000413 item = 0
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000414 return item + 1
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000415\end{verbatim}
416
Fred Drakeb0a78731998-01-13 18:51:10 +0000417Here is the corresponding \C{} code, in all its glory:
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000418
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000419\begin{verbatim}
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000420int incr_item(PyObject *dict, PyObject *key)
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000421{
422 /* Objects all initialized to NULL for Py_XDECREF */
423 PyObject *item = NULL, *const_one = NULL, *incremented_item = NULL;
Guido van Rossum5b8a5231997-12-30 04:38:44 +0000424 int rv = -1; /* Return value initialized to -1 (failure) */
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000425
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000426 item = PyObject_GetItem(dict, key);
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000427 if (item == NULL) {
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000428 /* Handle keyError only: */
429 if (!PyErr_ExceptionMatches(PyExc_keyError)) goto error;
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000430
431 /* Clear the error and use zero: */
432 PyErr_Clear();
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000433 item = PyInt_FromLong(0L);
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000434 if (item == NULL) goto error;
435 }
436
437 const_one = PyInt_FromLong(1L);
438 if (const_one == NULL) goto error;
439
440 incremented_item = PyNumber_Add(item, const_one);
441 if (incremented_item == NULL) goto error;
442
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000443 if (PyObject_SetItem(dict, key, incremented_item) < 0) goto error;
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000444 rv = 0; /* Success */
445 /* Continue with cleanup code */
446
447 error:
448 /* Cleanup code, shared by success and failure path */
449
450 /* Use Py_XDECREF() to ignore NULL references */
451 Py_XDECREF(item);
452 Py_XDECREF(const_one);
453 Py_XDECREF(incremented_item);
454
455 return rv; /* -1 for error, 0 for success */
456}
457\end{verbatim}
458
459This example represents an endorsed use of the \code{goto} statement
Fred Drakee058b4f1998-02-16 06:15:35 +0000460in \C{}! It illustrates the use of
461\cfunction{PyErr_ExceptionMatches()} and \cfunction{PyErr_Clear()} to
462handle specific exceptions, and the use of \cfunction{Py_XDECREF()} to
463dispose of owned references that may be \NULL{} (note the \samp{X} in
464the name; \cfunction{Py_DECREF()} would crash when confronted with a
465\NULL{} reference). It is important that the variables used to hold
466owned references are initialized to \NULL{} for this to work;
467likewise, the proposed return value is initialized to \code{-1}
468(failure) and only set to success after the final call made is
469successful.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000470
Guido van Rossum59a61351997-08-14 20:34:33 +0000471
472\section{Embedding Python}
473
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000474The one important task that only embedders (as opposed to extension
475writers) of the Python interpreter have to worry about is the
476initialization, and possibly the finalization, of the Python
477interpreter. Most functionality of the interpreter can only be used
478after the interpreter has been initialized.
Guido van Rossum59a61351997-08-14 20:34:33 +0000479
Fred Drakee058b4f1998-02-16 06:15:35 +0000480The basic initialization function is \cfunction{Py_Initialize()}.
481This initializes the table of loaded modules, and creates the
Fred Drake4de05a91998-02-16 14:25:26 +0000482fundamental modules \module{__builtin__}\refbimodindex{__builtin__},
483\module{__main__}\refbimodindex{__main__} and
484\module{sys}\refbimodindex{sys}. It also initializes the module
485search path (\code{sys.path}).
Guido van Rossum59a61351997-08-14 20:34:33 +0000486
Fred Drakee058b4f1998-02-16 06:15:35 +0000487\cfunction{Py_Initialize()} does not set the ``script argument list''
Guido van Rossum4a944d71997-08-14 20:35:38 +0000488(\code{sys.argv}). If this variable is needed by Python code that
489will be executed later, it must be set explicitly with a call to
490\code{PySys_SetArgv(\var{argc}, \var{argv})} subsequent to the call
Fred Drakee058b4f1998-02-16 06:15:35 +0000491to \cfunction{Py_Initialize()}.
Guido van Rossum59a61351997-08-14 20:34:33 +0000492
Fred Drakeb0a78731998-01-13 18:51:10 +0000493On most systems (in particular, on \UNIX{} and Windows, although the
Fred Drakee058b4f1998-02-16 06:15:35 +0000494details are slightly different), \cfunction{Py_Initialize()}
495calculates the module search path based upon its best guess for the
496location of the standard Python interpreter executable, assuming that
497the Python library is found in a fixed location relative to the Python
Guido van Rossum42cefd01997-10-05 15:27:29 +0000498interpreter executable. In particular, it looks for a directory named
Fred Drakee058b4f1998-02-16 06:15:35 +0000499\file{lib/python\version} (replacing \file{\version} with the current
Guido van Rossum42cefd01997-10-05 15:27:29 +0000500interpreter version) relative to the parent directory where the
Fred Drakee058b4f1998-02-16 06:15:35 +0000501executable named \file{python} is found on the shell command search
Guido van Rossum42cefd01997-10-05 15:27:29 +0000502path (the environment variable \code{\$PATH}).
503
504For instance, if the Python executable is found in
Fred Drakee058b4f1998-02-16 06:15:35 +0000505\file{/usr/local/bin/python}, it will assume that the libraries are in
506\file{/usr/local/lib/python\version}. (In fact, this particular path
507is also the ``fallback'' location, used when no executable file named
508\file{python} is found along \code{\$PATH}.) The user can override
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000509this behavior by setting the environment variable \code{\$PYTHONHOME},
510or insert additional directories in front of the standard path by
511setting \code{\$PYTHONPATH}.
Guido van Rossum59a61351997-08-14 20:34:33 +0000512
Guido van Rossum4a944d71997-08-14 20:35:38 +0000513The embedding application can steer the search by calling
514\code{Py_SetProgramName(\var{file})} \emph{before} calling
Fred Drakee058b4f1998-02-16 06:15:35 +0000515\cfunction{Py_Initialize()}. Note that \code{\$PYTHONHOME} still
516overrides this and \code{\$PYTHONPATH} is still inserted in front of
517the standard path. An application that requires total control has to
518provide its own implementation of \cfunction{Py_GetPath()},
519\cfunction{Py_GetPrefix()}, \cfunction{Py_GetExecPrefix()},
520\cfunction{Py_GetProgramFullPath()} (all defined in
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000521\file{Modules/getpath.c}).
Guido van Rossum59a61351997-08-14 20:34:33 +0000522
Guido van Rossum4a944d71997-08-14 20:35:38 +0000523Sometimes, it is desirable to ``uninitialize'' Python. For instance,
524the application may want to start over (make another call to
Fred Drakee058b4f1998-02-16 06:15:35 +0000525\cfunction{Py_Initialize()}) or the application is simply done with its
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000526use of Python and wants to free all memory allocated by Python. This
Fred Drakee058b4f1998-02-16 06:15:35 +0000527can be accomplished by calling \cfunction{Py_Finalize()}. The function
528\cfunction{Py_IsInitialized()} returns true iff Python is currently in the
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000529initialized state. More information about these functions is given in
530a later chapter.
Guido van Rossum59a61351997-08-14 20:34:33 +0000531
Guido van Rossum4a944d71997-08-14 20:35:38 +0000532
Fred Drakee5bf8b21998-02-12 21:22:28 +0000533\chapter{The Very High Level Layer}
Guido van Rossum4a944d71997-08-14 20:35:38 +0000534
Fred Drakee5bf8b21998-02-12 21:22:28 +0000535The functions in this chapter will let you execute Python source code
536given in a file or a buffer, but they will not let you interact in a
537more detailed way with the interpreter.
Guido van Rossum4a944d71997-08-14 20:35:38 +0000538
Fred Drakee5bf8b21998-02-12 21:22:28 +0000539\begin{cfuncdesc}{int}{PyRun_AnyFile}{FILE *, char *}
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000540\end{cfuncdesc}
541
Fred Drakee5bf8b21998-02-12 21:22:28 +0000542\begin{cfuncdesc}{int}{PyRun_SimpleString}{char *}
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000543\end{cfuncdesc}
544
Fred Drakee5bf8b21998-02-12 21:22:28 +0000545\begin{cfuncdesc}{int}{PyRun_SimpleFile}{FILE *, char *}
546\end{cfuncdesc}
547
548\begin{cfuncdesc}{int}{PyRun_InteractiveOne}{FILE *, char *}
549\end{cfuncdesc}
550
551\begin{cfuncdesc}{int}{PyRun_InteractiveLoop}{FILE *, char *}
552\end{cfuncdesc}
553
554\begin{cfuncdesc}{struct _node *}{PyParser_SimpleParseString}{char *, int}
555\end{cfuncdesc}
556
557\begin{cfuncdesc}{struct _node *}{PyParser_SimpleParseFile}{FILE *, char *, int}
558\end{cfuncdesc}
559
560\begin{cfuncdesc}{PyObject *}{PyRun_String}{char *, int, PyObject *, PyObject *}
561\end{cfuncdesc}
562
563\begin{cfuncdesc}{PyObject *}{PyRun_File}{FILE *, char *, int, PyObject *, PyObject *}
564\end{cfuncdesc}
565
566\begin{cfuncdesc}{PyObject *}{Py_CompileString}{char *, char *, int}
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000567\end{cfuncdesc}
568
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000569
570\chapter{Reference Counting}
571
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000572The macros in this section are used for managing reference counts
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000573of Python objects.
574
575\begin{cfuncdesc}{void}{Py_INCREF}{PyObject *o}
576Increment the reference count for object \code{o}. The object must
577not be \NULL{}; if you aren't sure that it isn't \NULL{}, use
Fred Drakee058b4f1998-02-16 06:15:35 +0000578\cfunction{Py_XINCREF()}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000579\end{cfuncdesc}
580
581\begin{cfuncdesc}{void}{Py_XINCREF}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +0000582Increment the reference count for object \var{o}. The object may be
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000583\NULL{}, in which case the macro has no effect.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000584\end{cfuncdesc}
585
586\begin{cfuncdesc}{void}{Py_DECREF}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +0000587Decrement the reference count for object \var{o}. The object must
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000588not be \NULL{}; if you aren't sure that it isn't \NULL{}, use
Fred Drakee058b4f1998-02-16 06:15:35 +0000589\cfunction{Py_XDECREF()}. If the reference count reaches zero, the
590object's type's deallocation function (which must not be \NULL{}) is
591invoked.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000592
593\strong{Warning:} The deallocation function can cause arbitrary Python
Fred Drakee058b4f1998-02-16 06:15:35 +0000594code to be invoked (e.g. when a class instance with a \method{__del__()}
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000595method is deallocated). While exceptions in such code are not
596propagated, the executed code has free access to all Python global
597variables. This means that any object that is reachable from a global
Fred Drakee058b4f1998-02-16 06:15:35 +0000598variable should be in a consistent state before \cfunction{Py_DECREF()} is
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000599invoked. For example, code to delete an object from a list should
600copy a reference to the deleted object in a temporary variable, update
Fred Drakee058b4f1998-02-16 06:15:35 +0000601the list data structure, and then call \cfunction{Py_DECREF()} for the
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000602temporary variable.
603\end{cfuncdesc}
604
605\begin{cfuncdesc}{void}{Py_XDECREF}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +0000606Decrement the reference count for object \var{o}. The object may be
607\NULL{}, in which case the macro has no effect; otherwise the effect
608is the same as for \cfunction{Py_DECREF()}, and the same warning
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000609applies.
610\end{cfuncdesc}
611
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000612The following functions or macros are only for internal use:
Fred Drakee058b4f1998-02-16 06:15:35 +0000613\cfunction{_Py_Dealloc()}, \cfunction{_Py_ForgetReference()},
614\cfunction{_Py_NewReference()}, as well as the global variable
615\code{_Py_RefTotal}.
Guido van Rossumae110af1997-05-22 20:11:52 +0000616
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000617XXX Should mention Py_Malloc(), Py_Realloc(), Py_Free(),
618PyMem_Malloc(), PyMem_Realloc(), PyMem_Free(), PyMem_NEW(),
619PyMem_RESIZE(), PyMem_DEL(), PyMem_XDEL().
620
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000621
622\chapter{Exception Handling}
623
624The functions in this chapter will let you handle and raise Python
Guido van Rossumae110af1997-05-22 20:11:52 +0000625exceptions. It is important to understand some of the basics of
Fred Drakeb0a78731998-01-13 18:51:10 +0000626Python exception handling. It works somewhat like the \UNIX{}
Guido van Rossumae110af1997-05-22 20:11:52 +0000627\code{errno} variable: there is a global indicator (per thread) of the
628last error that occurred. Most functions don't clear this on success,
629but will set it to indicate the cause of the error on failure. Most
630functions also return an error indicator, usually \NULL{} if they are
Fred Drakee058b4f1998-02-16 06:15:35 +0000631supposed to return a pointer, or \code{-1} if they return an integer
632(exception: the \code{PyArg_Parse*()} functions return \code{1} for
633success and \code{0} for failure). When a function must fail because
634some function it called failed, it generally doesn't set the error
635indicator; the function it called already set it.
Guido van Rossumae110af1997-05-22 20:11:52 +0000636
637The error indicator consists of three Python objects corresponding to
638the Python variables \code{sys.exc_type}, \code{sys.exc_value} and
639\code{sys.exc_traceback}. API functions exist to interact with the
640error indicator in various ways. There is a separate error indicator
641for each thread.
642
643% XXX Order of these should be more thoughtful.
644% Either alphabetical or some kind of structure.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000645
646\begin{cfuncdesc}{void}{PyErr_Print}{}
Guido van Rossumae110af1997-05-22 20:11:52 +0000647Print a standard traceback to \code{sys.stderr} and clear the error
648indicator. Call this function only when the error indicator is set.
649(Otherwise it will cause a fatal error!)
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000650\end{cfuncdesc}
651
Guido van Rossumae110af1997-05-22 20:11:52 +0000652\begin{cfuncdesc}{PyObject *}{PyErr_Occurred}{}
653Test whether the error indicator is set. If set, return the exception
Fred Drakee058b4f1998-02-16 06:15:35 +0000654\emph{type} (the first argument to the last call to one of the
655\code{PyErr_Set*()} functions or to \cfunction{PyErr_Restore()}). If
656not set, return \NULL{}. You do not own a reference to the return
657value, so you do not need to \cfunction{Py_DECREF()} it.
658\strong{Note:} do not compare the return value to a specific
659exception; use \cfunction{PyErr_ExceptionMatches()} instead, shown
660below.
Guido van Rossum42cefd01997-10-05 15:27:29 +0000661\end{cfuncdesc}
662
663\begin{cfuncdesc}{int}{PyErr_ExceptionMatches}{PyObject *exc}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000664Equivalent to
Fred Drakee058b4f1998-02-16 06:15:35 +0000665\samp{PyErr_GivenExceptionMatches(PyErr_Occurred(), \var{exc})}.
Guido van Rossum42cefd01997-10-05 15:27:29 +0000666This should only be called when an exception is actually set.
667\end{cfuncdesc}
668
669\begin{cfuncdesc}{int}{PyErr_GivenExceptionMatches}{PyObject *given, PyObject *exc}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000670Return true if the \var{given} exception matches the exception in
671\var{exc}. If \var{exc} is a class object, this also returns true
672when \var{given} is a subclass. If \var{exc} is a tuple, all
673exceptions in the tuple (and recursively in subtuples) are searched
674for a match. This should only be called when an exception is actually
675set.
676\end{cfuncdesc}
677
678\begin{cfuncdesc}{void}{PyErr_NormalizeException}{PyObject**exc, PyObject**val, PyObject**tb}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000679Under certain circumstances, the values returned by
Fred Drakee058b4f1998-02-16 06:15:35 +0000680\cfunction{PyErr_Fetch()} below can be ``unnormalized'', meaning that
681\code{*\var{exc}} is a class object but \code{*\var{val}} is not an
682instance of the same class. This function can be used to instantiate
683the class in that case. If the values are already normalized, nothing
684happens.
Guido van Rossumae110af1997-05-22 20:11:52 +0000685\end{cfuncdesc}
686
687\begin{cfuncdesc}{void}{PyErr_Clear}{}
688Clear the error indicator. If the error indicator is not set, there
689is no effect.
690\end{cfuncdesc}
691
692\begin{cfuncdesc}{void}{PyErr_Fetch}{PyObject **ptype, PyObject **pvalue, PyObject **ptraceback}
693Retrieve the error indicator into three variables whose addresses are
694passed. If the error indicator is not set, set all three variables to
695\NULL{}. If it is set, it will be cleared and you own a reference to
696each object retrieved. The value and traceback object may be \NULL{}
697even when the type object is not. \strong{Note:} this function is
698normally only used by code that needs to handle exceptions or by code
699that needs to save and restore the error indicator temporarily.
700\end{cfuncdesc}
701
702\begin{cfuncdesc}{void}{PyErr_Restore}{PyObject *type, PyObject *value, PyObject *traceback}
703Set the error indicator from the three objects. If the error
704indicator is already set, it is cleared first. If the objects are
705\NULL{}, the error indicator is cleared. Do not pass a \NULL{} type
706and non-\NULL{} value or traceback. The exception type should be a
707string or class; if it is a class, the value should be an instance of
708that class. Do not pass an invalid exception type or value.
709(Violating these rules will cause subtle problems later.) This call
710takes away a reference to each object, i.e. you must own a reference
711to each object before the call and after the call you no longer own
712these references. (If you don't understand this, don't use this
713function. I warned you.) \strong{Note:} this function is normally
714only used by code that needs to save and restore the error indicator
715temporarily.
716\end{cfuncdesc}
717
718\begin{cfuncdesc}{void}{PyErr_SetString}{PyObject *type, char *message}
719This is the most common way to set the error indicator. The first
720argument specifies the exception type; it is normally one of the
721standard exceptions, e.g. \code{PyExc_RuntimeError}. You need not
722increment its reference count. The second argument is an error
723message; it is converted to a string object.
724\end{cfuncdesc}
725
726\begin{cfuncdesc}{void}{PyErr_SetObject}{PyObject *type, PyObject *value}
Fred Drakee058b4f1998-02-16 06:15:35 +0000727This function is similar to \cfunction{PyErr_SetString()} but lets you
Guido van Rossumae110af1997-05-22 20:11:52 +0000728specify an arbitrary Python object for the ``value'' of the exception.
729You need not increment its reference count.
730\end{cfuncdesc}
731
732\begin{cfuncdesc}{void}{PyErr_SetNone}{PyObject *type}
Fred Drakee058b4f1998-02-16 06:15:35 +0000733This is a shorthand for \samp{PyErr_SetObject(\var{type}, Py_None)}.
Guido van Rossumae110af1997-05-22 20:11:52 +0000734\end{cfuncdesc}
735
736\begin{cfuncdesc}{int}{PyErr_BadArgument}{}
Fred Drakee058b4f1998-02-16 06:15:35 +0000737This is a shorthand for \samp{PyErr_SetString(PyExc_TypeError,
Guido van Rossumae110af1997-05-22 20:11:52 +0000738\var{message})}, where \var{message} indicates that a built-in operation
739was invoked with an illegal argument. It is mostly for internal use.
740\end{cfuncdesc}
741
742\begin{cfuncdesc}{PyObject *}{PyErr_NoMemory}{}
Fred Drakee058b4f1998-02-16 06:15:35 +0000743This is a shorthand for \samp{PyErr_SetNone(PyExc_MemoryError)}; it
Guido van Rossumae110af1997-05-22 20:11:52 +0000744returns \NULL{} so an object allocation function can write
Fred Drakee058b4f1998-02-16 06:15:35 +0000745\samp{return PyErr_NoMemory();} when it runs out of memory.
Guido van Rossumae110af1997-05-22 20:11:52 +0000746\end{cfuncdesc}
747
748\begin{cfuncdesc}{PyObject *}{PyErr_SetFromErrno}{PyObject *type}
Fred Drakeb0a78731998-01-13 18:51:10 +0000749This is a convenience function to raise an exception when a \C{} library
750function has returned an error and set the \C{} variable \code{errno}.
Guido van Rossumae110af1997-05-22 20:11:52 +0000751It constructs a tuple object whose first item is the integer
752\code{errno} value and whose second item is the corresponding error
Fred Drakee058b4f1998-02-16 06:15:35 +0000753message (gotten from \cfunction{strerror()}), and then calls
754\samp{PyErr_SetObject(\var{type}, \var{object})}. On \UNIX{}, when
755the \code{errno} value is \constant{EINTR}, indicating an interrupted
756system call, this calls \cfunction{PyErr_CheckSignals()}, and if that set
Guido van Rossumae110af1997-05-22 20:11:52 +0000757the error indicator, leaves it set to that. The function always
758returns \NULL{}, so a wrapper function around a system call can write
Fred Drakee058b4f1998-02-16 06:15:35 +0000759\samp{return PyErr_SetFromErrno();} when the system call returns an
760error.
Guido van Rossumae110af1997-05-22 20:11:52 +0000761\end{cfuncdesc}
762
763\begin{cfuncdesc}{void}{PyErr_BadInternalCall}{}
Fred Drakee058b4f1998-02-16 06:15:35 +0000764This is a shorthand for \samp{PyErr_SetString(PyExc_TypeError,
Guido van Rossumae110af1997-05-22 20:11:52 +0000765\var{message})}, where \var{message} indicates that an internal
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000766operation (e.g. a Python/C API function) was invoked with an illegal
Guido van Rossumae110af1997-05-22 20:11:52 +0000767argument. It is mostly for internal use.
768\end{cfuncdesc}
769
770\begin{cfuncdesc}{int}{PyErr_CheckSignals}{}
771This function interacts with Python's signal handling. It checks
772whether a signal has been sent to the processes and if so, invokes the
Fred Drake4de05a91998-02-16 14:25:26 +0000773corresponding signal handler. If the
774\module{signal}\refbimodindex{signal} module is supported, this can
775invoke a signal handler written in Python. In all cases, the default
776effect for \constant{SIGINT} is to raise the
777\exception{KeyboadInterrupt} exception. If an exception is raised the
Fred Drakee058b4f1998-02-16 06:15:35 +0000778error indicator is set and the function returns \code{1}; otherwise
779the function returns \code{0}. The error indicator may or may not be
780cleared if it was previously set.
Guido van Rossumae110af1997-05-22 20:11:52 +0000781\end{cfuncdesc}
782
783\begin{cfuncdesc}{void}{PyErr_SetInterrupt}{}
784This function is obsolete (XXX or platform dependent?). It simulates
Fred Drakee058b4f1998-02-16 06:15:35 +0000785the effect of a \constant{SIGINT} signal arriving --- the next time
786\cfunction{PyErr_CheckSignals()} is called,
787\exception{KeyboadInterrupt} will be raised.
Guido van Rossumae110af1997-05-22 20:11:52 +0000788\end{cfuncdesc}
789
Guido van Rossum42cefd01997-10-05 15:27:29 +0000790\begin{cfuncdesc}{PyObject *}{PyErr_NewException}{char *name,
791PyObject *base, PyObject *dict}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000792This utility function creates and returns a new exception object. The
Fred Drakeb0a78731998-01-13 18:51:10 +0000793\var{name} argument must be the name of the new exception, a \C{} string
Guido van Rossum42cefd01997-10-05 15:27:29 +0000794of the form \code{module.class}. The \var{base} and \var{dict}
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000795arguments are normally \NULL{}. Normally, this creates a class
Guido van Rossum42cefd01997-10-05 15:27:29 +0000796object derived from the root for all exceptions, the built-in name
Fred Drakee058b4f1998-02-16 06:15:35 +0000797\exception{Exception} (accessible in \C{} as \code{PyExc_Exception}).
798In this case the \code{__module__} attribute of the new class is set to the
Guido van Rossum42cefd01997-10-05 15:27:29 +0000799first part (up to the last dot) of the \var{name} argument, and the
800class name is set to the last part (after the last dot). When the
801user has specified the \code{-X} command line option to use string
802exceptions, for backward compatibility, or when the \var{base}
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000803argument is not a class object (and not \NULL{}), a string object
Guido van Rossum42cefd01997-10-05 15:27:29 +0000804created from the entire \var{name} argument is returned. The
805\var{base} argument can be used to specify an alternate base class.
806The \var{dict} argument can be used to specify a dictionary of class
807variables and methods.
808\end{cfuncdesc}
809
810
Guido van Rossumae110af1997-05-22 20:11:52 +0000811\section{Standard Exceptions}
812
813All standard Python exceptions are available as global variables whose
Fred Drakee058b4f1998-02-16 06:15:35 +0000814names are \samp{PyExc_} followed by the Python exception name.
815These have the type \code{PyObject *}; they are all either class
816objects or string objects, depending on the use of the \code{-X}
817option to the interpreter. For completeness, here are all the
Fred Drake9d20ac31998-02-16 15:27:08 +0000818variables:
Guido van Rossum42cefd01997-10-05 15:27:29 +0000819\code{PyExc_Exception},
820\code{PyExc_StandardError},
821\code{PyExc_ArithmeticError},
822\code{PyExc_LookupError},
Guido van Rossumae110af1997-05-22 20:11:52 +0000823\code{PyExc_AssertionError},
824\code{PyExc_AttributeError},
825\code{PyExc_EOFError},
826\code{PyExc_FloatingPointError},
827\code{PyExc_IOError},
828\code{PyExc_ImportError},
829\code{PyExc_IndexError},
830\code{PyExc_KeyError},
831\code{PyExc_KeyboardInterrupt},
832\code{PyExc_MemoryError},
833\code{PyExc_NameError},
834\code{PyExc_OverflowError},
835\code{PyExc_RuntimeError},
836\code{PyExc_SyntaxError},
837\code{PyExc_SystemError},
838\code{PyExc_SystemExit},
839\code{PyExc_TypeError},
840\code{PyExc_ValueError},
841\code{PyExc_ZeroDivisionError}.
842
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000843
844\chapter{Utilities}
845
846The functions in this chapter perform various utility tasks, such as
Fred Drakeb0a78731998-01-13 18:51:10 +0000847parsing function arguments and constructing Python values from \C{}
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000848values.
849
Guido van Rossum42cefd01997-10-05 15:27:29 +0000850\section{OS Utilities}
851
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000852\begin{cfuncdesc}{int}{Py_FdIsInteractive}{FILE *fp, char *filename}
Fred Drakee058b4f1998-02-16 06:15:35 +0000853Return true (nonzero) if the standard I/O file \var{fp} with name
854\var{filename} is deemed interactive. This is the case for files for
855which \samp{isatty(fileno(\var{fp}))} is true. If the global flag
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000856\code{Py_InteractiveFlag} is true, this function also returns true if
Fred Drakee058b4f1998-02-16 06:15:35 +0000857the \var{name} pointer is \NULL{} or if the name is equal to one of
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000858the strings \code{"<stdin>"} or \code{"???"}.
859\end{cfuncdesc}
860
861\begin{cfuncdesc}{long}{PyOS_GetLastModificationTime}{char *filename}
Fred Drakee058b4f1998-02-16 06:15:35 +0000862Return the time of last modification of the file \var{filename}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000863The result is encoded in the same way as the timestamp returned by
Fred Drakee058b4f1998-02-16 06:15:35 +0000864the standard \C{} library function \cfunction{time()}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000865\end{cfuncdesc}
866
867
Fred Drakee5bf8b21998-02-12 21:22:28 +0000868\section{Process Control}
869
870\begin{cfuncdesc}{void}{Py_FatalError}{char *message}
871Print a fatal error message and kill the process. No cleanup is
872performed. This function should only be invoked when a condition is
873detected that would make it dangerous to continue using the Python
874interpreter; e.g., when the object administration appears to be
Fred Drakee058b4f1998-02-16 06:15:35 +0000875corrupted. On \UNIX{}, the standard \C{} library function
876\cfunction{abort()} is called which will attempt to produce a
877\file{core} file.
Fred Drakee5bf8b21998-02-12 21:22:28 +0000878\end{cfuncdesc}
879
880\begin{cfuncdesc}{void}{Py_Exit}{int status}
Fred Drakee058b4f1998-02-16 06:15:35 +0000881Exit the current process. This calls \cfunction{Py_Finalize()} and
882then calls the standard \C{} library function
883\code{exit(\var{status})}.
Fred Drakee5bf8b21998-02-12 21:22:28 +0000884\end{cfuncdesc}
885
886\begin{cfuncdesc}{int}{Py_AtExit}{void (*func) ()}
887Register a cleanup function to be called by \cfunction{Py_Finalize()}.
888The cleanup function will be called with no arguments and should
889return no value. At most 32 cleanup functions can be registered.
890When the registration is successful, \cfunction{Py_AtExit()} returns
891\code{0}; on failure, it returns \code{-1}. The cleanup function
892registered last is called first. Each cleanup function will be called
893at most once. Since Python's internal finallization will have
894completed before the cleanup function, no Python APIs should be called
895by \var{func}.
896\end{cfuncdesc}
897
898
899\section{Importing Modules}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000900
901\begin{cfuncdesc}{PyObject *}{PyImport_ImportModule}{char *name}
Fred Drakee058b4f1998-02-16 06:15:35 +0000902This is a simplified interface to \cfunction{PyImport_ImportModuleEx()}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000903below, leaving the \var{globals} and \var{locals} arguments set to
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000904\NULL{}. When the \var{name} argument contains a dot (i.e., when
Guido van Rossum42cefd01997-10-05 15:27:29 +0000905it specifies a submodule of a package), the \var{fromlist} argument is
906set to the list \code{['*']} so that the return value is the named
907module rather than the top-level package containing it as would
908otherwise be the case. (Unfortunately, this has an additional side
909effect when \var{name} in fact specifies a subpackage instead of a
910submodule: the submodules specified in the package's \code{__all__}
911variable are loaded.) Return a new reference to the imported module,
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000912or \NULL{} with an exception set on failure (the module may still
Guido van Rossum42cefd01997-10-05 15:27:29 +0000913be created in this case).
914\end{cfuncdesc}
915
916\begin{cfuncdesc}{PyObject *}{PyImport_ImportModuleEx}{char *name, PyObject *globals, PyObject *locals, PyObject *fromlist}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000917Import a module. This is best described by referring to the built-in
Fred Drake53fb7721998-02-16 06:23:20 +0000918Python function \function{__import__()}\bifuncindex{__import__}, as
919the standard \function{__import__()} function calls this function
920directly.
Guido van Rossum42cefd01997-10-05 15:27:29 +0000921
Guido van Rossum42cefd01997-10-05 15:27:29 +0000922The return value is a new reference to the imported module or
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000923top-level package, or \NULL{} with an exception set on failure
Guido van Rossumc44d3d61997-10-06 05:10:47 +0000924(the module may still be created in this case). Like for
Fred Drakee058b4f1998-02-16 06:15:35 +0000925\function{__import__()}, the return value when a submodule of a
926package was requested is normally the top-level package, unless a
927non-empty \var{fromlist} was given.
Guido van Rossum42cefd01997-10-05 15:27:29 +0000928\end{cfuncdesc}
929
930\begin{cfuncdesc}{PyObject *}{PyImport_Import}{PyObject *name}
931This is a higher-level interface that calls the current ``import hook
Fred Drakee058b4f1998-02-16 06:15:35 +0000932function''. It invokes the \function{__import__()} function from the
Guido van Rossum42cefd01997-10-05 15:27:29 +0000933\code{__builtins__} of the current globals. This means that the
934import is done using whatever import hooks are installed in the
Fred Drake4de05a91998-02-16 14:25:26 +0000935current environment, e.g. by \module{rexec}\refstmodindex{rexec} or
936\module{ihooks}\refstmodindex{ihooks}.
Guido van Rossum42cefd01997-10-05 15:27:29 +0000937\end{cfuncdesc}
938
939\begin{cfuncdesc}{PyObject *}{PyImport_ReloadModule}{PyObject *m}
940Reload a module. This is best described by referring to the built-in
Fred Drake53fb7721998-02-16 06:23:20 +0000941Python function \function{reload()}\bifuncindex{reload}, as the standard
Fred Drakee058b4f1998-02-16 06:15:35 +0000942\function{reload()} function calls this function directly. Return a
943new reference to the reloaded module, or \NULL{} with an exception set
944on failure (the module still exists in this case).
Guido van Rossum42cefd01997-10-05 15:27:29 +0000945\end{cfuncdesc}
946
947\begin{cfuncdesc}{PyObject *}{PyImport_AddModule}{char *name}
948Return the module object corresponding to a module name. The
949\var{name} argument may be of the form \code{package.module}). First
950check the modules dictionary if there's one there, and if not, create
951a new one and insert in in the modules dictionary. Because the former
952action is most common, this does not return a new reference, and you
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000953do not own the returned reference. Return \NULL{} with an
Guido van Rossum42cefd01997-10-05 15:27:29 +0000954exception set on failure.
955\end{cfuncdesc}
956
957\begin{cfuncdesc}{PyObject *}{PyImport_ExecCodeModule}{char *name, PyObject *co}
958Given a module name (possibly of the form \code{package.module}) and a
959code object read from a Python bytecode file or obtained from the
Fred Drake53fb7721998-02-16 06:23:20 +0000960built-in function \function{compile()}\bifuncindex{compile}, load the
961module. Return a new reference to the module object, or \NULL{} with
962an exception set if an error occurred (the module may still be created
963in this case). (This function would reload the module if it was
964already imported.)
Guido van Rossum42cefd01997-10-05 15:27:29 +0000965\end{cfuncdesc}
966
967\begin{cfuncdesc}{long}{PyImport_GetMagicNumber}{}
Fred Drakee058b4f1998-02-16 06:15:35 +0000968Return the magic number for Python bytecode files (a.k.a. \file{.pyc}
969and \file{.pyo} files). The magic number should be present in the
Guido van Rossum42cefd01997-10-05 15:27:29 +0000970first four bytes of the bytecode file, in little-endian byte order.
971\end{cfuncdesc}
972
973\begin{cfuncdesc}{PyObject *}{PyImport_GetModuleDict}{}
974Return the dictionary used for the module administration
975(a.k.a. \code{sys.modules}). Note that this is a per-interpreter
976variable.
977\end{cfuncdesc}
978
979\begin{cfuncdesc}{void}{_PyImport_Init}{}
980Initialize the import mechanism. For internal use only.
981\end{cfuncdesc}
982
983\begin{cfuncdesc}{void}{PyImport_Cleanup}{}
984Empty the module table. For internal use only.
985\end{cfuncdesc}
986
987\begin{cfuncdesc}{void}{_PyImport_Fini}{}
988Finalize the import mechanism. For internal use only.
989\end{cfuncdesc}
990
Guido van Rossum5b8a5231997-12-30 04:38:44 +0000991\begin{cfuncdesc}{extern PyObject *}{_PyImport_FindExtension}{char *, char *}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000992For internal use only.
Guido van Rossum5b8a5231997-12-30 04:38:44 +0000993\end{cfuncdesc}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000994
Guido van Rossum5b8a5231997-12-30 04:38:44 +0000995\begin{cfuncdesc}{extern PyObject *}{_PyImport_FixupExtension}{char *, char *}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000996For internal use only.
Guido van Rossum5b8a5231997-12-30 04:38:44 +0000997\end{cfuncdesc}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000998
999\begin{cfuncdesc}{int}{PyImport_ImportFrozenModule}{char *}
1000Load a frozen module. Return \code{1} for success, \code{0} if the
1001module is not found, and \code{-1} with an exception set if the
1002initialization failed. To access the imported module on a successful
Fred Drakee058b4f1998-02-16 06:15:35 +00001003load, use \cfunction{PyImport_ImportModule()}.
1004(Note the misnomer --- this function would reload the module if it was
Guido van Rossum42cefd01997-10-05 15:27:29 +00001005already imported.)
1006\end{cfuncdesc}
1007
1008\begin{ctypedesc}{struct _frozen}
1009This is the structure type definition for frozen module descriptors,
1010as generated by the \code{freeze} utility (see \file{Tools/freeze/} in
1011the Python source distribution). Its definition is:
Guido van Rossum9faf4c51997-10-07 14:38:54 +00001012\begin{verbatim}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001013struct _frozen {
Fred Drake36fbe761997-10-13 18:18:33 +00001014 char *name;
1015 unsigned char *code;
1016 int size;
Guido van Rossum42cefd01997-10-05 15:27:29 +00001017};
Guido van Rossum9faf4c51997-10-07 14:38:54 +00001018\end{verbatim}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001019\end{ctypedesc}
1020
1021\begin{cvardesc}{struct _frozen *}{PyImport_FrozenModules}
1022This pointer is initialized to point to an array of \code{struct
Guido van Rossum580aa8d1997-11-25 15:34:51 +00001023_frozen} records, terminated by one whose members are all \NULL{}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001024or zero. When a frozen module is imported, it is searched in this
1025table. Third party code could play tricks with this to provide a
1026dynamically created collection of frozen modules.
1027\end{cvardesc}
1028
1029
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001030\chapter{Abstract Objects Layer}
1031
1032The functions in this chapter interact with Python objects regardless
1033of their type, or with wide classes of object types (e.g. all
1034numerical types, or all sequence types). When used on object types
1035for which they do not apply, they will flag a Python exception.
1036
1037\section{Object Protocol}
1038
1039\begin{cfuncdesc}{int}{PyObject_Print}{PyObject *o, FILE *fp, int flags}
Fred Drakee058b4f1998-02-16 06:15:35 +00001040Print an object \var{o}, on file \var{fp}. Returns \code{-1} on error
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001041The flags argument is used to enable certain printing
Fred Drakee058b4f1998-02-16 06:15:35 +00001042options. The only option currently supported is
1043\constant{Py_Print_RAW}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001044\end{cfuncdesc}
1045
1046\begin{cfuncdesc}{int}{PyObject_HasAttrString}{PyObject *o, char *attr_name}
Fred Drakee058b4f1998-02-16 06:15:35 +00001047Returns \code{1} if \var{o} has the attribute \var{attr_name}, and
1048\code{0} otherwise. This is equivalent to the Python expression
1049\samp{hasattr(\var{o}, \var{attr_name})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001050This function always succeeds.
1051\end{cfuncdesc}
1052
1053\begin{cfuncdesc}{PyObject*}{PyObject_GetAttrString}{PyObject *o, char *attr_name}
Fred Drakee058b4f1998-02-16 06:15:35 +00001054Retrieve an attribute named \var{attr_name} from object \var{o}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001055Returns the attribute value on success, or \NULL{} on failure.
Fred Drakee058b4f1998-02-16 06:15:35 +00001056This is the equivalent of the Python expression
1057\samp{\var{o}.\var{attr_name}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001058\end{cfuncdesc}
1059
1060
1061\begin{cfuncdesc}{int}{PyObject_HasAttr}{PyObject *o, PyObject *attr_name}
Fred Drakee058b4f1998-02-16 06:15:35 +00001062Returns \code{1} if \var{o} has the attribute \var{attr_name}, and
1063\code{0} otherwise. This is equivalent to the Python expression
1064\samp{hasattr(\var{o}, \var{attr_name})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001065This function always succeeds.
1066\end{cfuncdesc}
1067
1068
1069\begin{cfuncdesc}{PyObject*}{PyObject_GetAttr}{PyObject *o, PyObject *attr_name}
Fred Drakee058b4f1998-02-16 06:15:35 +00001070Retrieve an attribute named \var{attr_name} from object \var{o}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001071Returns the attribute value on success, or \NULL{} on failure.
Fred Drakee058b4f1998-02-16 06:15:35 +00001072This is the equivalent of the Python expression
1073\samp{\var{o}.\var{attr_name}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001074\end{cfuncdesc}
1075
1076
1077\begin{cfuncdesc}{int}{PyObject_SetAttrString}{PyObject *o, char *attr_name, PyObject *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001078Set the value of the attribute named \var{attr_name}, for object
1079\var{o}, to the value \var{v}. Returns \code{-1} on failure. This is
1080the equivalent of the Python statement \samp{\var{o}.\var{attr_name} =
1081\var{v}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001082\end{cfuncdesc}
1083
1084
1085\begin{cfuncdesc}{int}{PyObject_SetAttr}{PyObject *o, PyObject *attr_name, PyObject *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001086Set the value of the attribute named \var{attr_name}, for
1087object \var{o},
1088to the value \var{v}. Returns \code{-1} on failure. This is
1089the equivalent of the Python statement \samp{\var{o}.\var{attr_name} =
1090\var{v}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001091\end{cfuncdesc}
1092
1093
1094\begin{cfuncdesc}{int}{PyObject_DelAttrString}{PyObject *o, char *attr_name}
Fred Drakee058b4f1998-02-16 06:15:35 +00001095Delete attribute named \var{attr_name}, for object \var{o}. Returns
1096\code{-1} on failure. This is the equivalent of the Python
1097statement: \samp{del \var{o}.\var{attr_name}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001098\end{cfuncdesc}
1099
1100
1101\begin{cfuncdesc}{int}{PyObject_DelAttr}{PyObject *o, PyObject *attr_name}
Fred Drakee058b4f1998-02-16 06:15:35 +00001102Delete attribute named \var{attr_name}, for object \var{o}. Returns
1103\code{-1} on failure. This is the equivalent of the Python
1104statement \samp{del \var{o}.\var{attr_name}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001105\end{cfuncdesc}
1106
1107
1108\begin{cfuncdesc}{int}{PyObject_Cmp}{PyObject *o1, PyObject *o2, int *result}
Fred Drakee058b4f1998-02-16 06:15:35 +00001109Compare the values of \var{o1} and \var{o2} using a routine provided
1110by \var{o1}, if one exists, otherwise with a routine provided by
1111\var{o2}. The result of the comparison is returned in \var{result}.
1112Returns \code{-1} on failure. This is the equivalent of the Python
1113statement \samp{\var{result} = cmp(\var{o1}, \var{o2})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001114\end{cfuncdesc}
1115
1116
1117\begin{cfuncdesc}{int}{PyObject_Compare}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001118Compare the values of \var{o1} and \var{o2} using a routine provided
1119by \var{o1}, if one exists, otherwise with a routine provided by
1120\var{o2}. Returns the result of the comparison on success. On error,
1121the value returned is undefined; use \cfunction{PyErr_Occurred()} to
1122detect an error. This is equivalent to the
1123Python expression \samp{cmp(\var{o1}, \var{o2})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001124\end{cfuncdesc}
1125
1126
1127\begin{cfuncdesc}{PyObject*}{PyObject_Repr}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001128Compute the string representation of object, \var{o}. Returns the
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001129string representation on success, \NULL{} on failure. This is
Fred Drakee058b4f1998-02-16 06:15:35 +00001130the equivalent of the Python expression \samp{repr(\var{o})}.
1131Called by the \function{repr()}\bifuncindex{repr} built-in function
1132and by reverse quotes.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001133\end{cfuncdesc}
1134
1135
1136\begin{cfuncdesc}{PyObject*}{PyObject_Str}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001137Compute the string representation of object \var{o}. Returns the
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001138string representation on success, \NULL{} on failure. This is
Fred Drakee058b4f1998-02-16 06:15:35 +00001139the equivalent of the Python expression \samp{str(\var{o})}.
1140Called by the \function{str()}\bifuncindex{str} built-in function and
1141by the \keyword{print} statement.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001142\end{cfuncdesc}
1143
1144
1145\begin{cfuncdesc}{int}{PyCallable_Check}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001146Determine if the object \var{o}, is callable. Return \code{1} if the
1147object is callable and \code{0} otherwise.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001148This function always succeeds.
1149\end{cfuncdesc}
1150
1151
1152\begin{cfuncdesc}{PyObject*}{PyObject_CallObject}{PyObject *callable_object, PyObject *args}
Fred Drakee058b4f1998-02-16 06:15:35 +00001153Call a callable Python object \var{callable_object}, with
1154arguments given by the tuple \var{args}. If no arguments are
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001155needed, then args may be \NULL{}. Returns the result of the
1156call on success, or \NULL{} on failure. This is the equivalent
Fred Drakee058b4f1998-02-16 06:15:35 +00001157of the Python expression \samp{apply(\var{o}, \var{args})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001158\end{cfuncdesc}
1159
1160\begin{cfuncdesc}{PyObject*}{PyObject_CallFunction}{PyObject *callable_object, char *format, ...}
Fred Drakee058b4f1998-02-16 06:15:35 +00001161Call a callable Python object \var{callable_object}, with a
Fred Drakeb0a78731998-01-13 18:51:10 +00001162variable number of \C{} arguments. The \C{} arguments are described
Fred Drakee058b4f1998-02-16 06:15:35 +00001163using a \cfunction{Py_BuildValue()} style format string. The format may
1164be \NULL{}, indicating that no arguments are provided. Returns the
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001165result of the call on success, or \NULL{} on failure. This is
Fred Drakee058b4f1998-02-16 06:15:35 +00001166the equivalent of the Python expression \samp{apply(\var{o},
1167\var{args})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001168\end{cfuncdesc}
1169
1170
1171\begin{cfuncdesc}{PyObject*}{PyObject_CallMethod}{PyObject *o, char *m, char *format, ...}
Fred Drakee058b4f1998-02-16 06:15:35 +00001172Call the method named \var{m} of object \var{o} with a variable number
1173of C arguments. The \C{} arguments are described by a
1174\cfunction{Py_BuildValue()} format string. The format may be \NULL{},
1175indicating that no arguments are provided. Returns the result of the
1176call on success, or \NULL{} on failure. This is the equivalent of the
1177Python expression \samp{\var{o}.\var{method}(\var{args})}.
1178Note that Special method names, such as \method{__add__()},
1179\method{__getitem__()}, and so on are not supported. The specific
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001180abstract-object routines for these must be used.
1181\end{cfuncdesc}
1182
1183
1184\begin{cfuncdesc}{int}{PyObject_Hash}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001185Compute and return the hash value of an object \var{o}. On
1186failure, return \code{-1}. This is the equivalent of the Python
1187expression \samp{hash(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001188\end{cfuncdesc}
1189
1190
1191\begin{cfuncdesc}{int}{PyObject_IsTrue}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001192Returns \code{1} if the object \var{o} is considered to be true, and
1193\code{0} otherwise. This is equivalent to the Python expression
1194\samp{not not \var{o}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001195This function always succeeds.
1196\end{cfuncdesc}
1197
1198
1199\begin{cfuncdesc}{PyObject*}{PyObject_Type}{PyObject *o}
1200On success, returns a type object corresponding to the object
Fred Drakee058b4f1998-02-16 06:15:35 +00001201type of object \var{o}. On failure, returns \NULL{}. This is
1202equivalent to the Python expression \samp{type(\var{o})}.
Fred Drake53fb7721998-02-16 06:23:20 +00001203\bifuncindex{type}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001204\end{cfuncdesc}
1205
1206\begin{cfuncdesc}{int}{PyObject_Length}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001207Return the length of object \var{o}. If the object \var{o} provides
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001208both sequence and mapping protocols, the sequence length is
Fred Drakee058b4f1998-02-16 06:15:35 +00001209returned. On error, \code{-1} is returned. This is the equivalent
1210to the Python expression \samp{len(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001211\end{cfuncdesc}
1212
1213
1214\begin{cfuncdesc}{PyObject*}{PyObject_GetItem}{PyObject *o, PyObject *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001215Return element of \var{o} corresponding to the object \var{key} or
1216\NULL{} on failure. This is the equivalent of the Python expression
1217\samp{\var{o}[\var{key}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001218\end{cfuncdesc}
1219
1220
1221\begin{cfuncdesc}{int}{PyObject_SetItem}{PyObject *o, PyObject *key, PyObject *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001222Map the object \var{key} to the value \var{v}.
1223Returns \code{-1} on failure. This is the equivalent
1224of the Python statement \samp{\var{o}[\var{key}] = \var{v}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001225\end{cfuncdesc}
1226
1227
1228\begin{cfuncdesc}{int}{PyObject_DelItem}{PyObject *o, PyObject *key, PyObject *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001229Delete the mapping for \var{key} from \var{o}. Returns \code{-1} on
1230failure. This is the equivalent of the Python statement \samp{del
1231\var{o}[\var{key}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001232\end{cfuncdesc}
1233
1234
1235\section{Number Protocol}
1236
1237\begin{cfuncdesc}{int}{PyNumber_Check}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001238Returns \code{1} if the object \var{o} provides numeric protocols, and
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001239false otherwise.
1240This function always succeeds.
1241\end{cfuncdesc}
1242
1243
1244\begin{cfuncdesc}{PyObject*}{PyNumber_Add}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001245Returns the result of adding \var{o1} and \var{o2}, or \NULL{} on
1246failure. This is the equivalent of the Python expression
1247\samp{\var{o1} + \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001248\end{cfuncdesc}
1249
1250
1251\begin{cfuncdesc}{PyObject*}{PyNumber_Subtract}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001252Returns the result of subtracting \var{o2} from \var{o1}, or \NULL{}
1253on failure. This is the equivalent of the Python expression
1254\samp{\var{o1} - \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001255\end{cfuncdesc}
1256
1257
1258\begin{cfuncdesc}{PyObject*}{PyNumber_Multiply}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001259Returns the result of multiplying \var{o1} and \var{o2}, or \NULL{} on
1260failure. This is the equivalent of the Python expression
1261\samp{\var{o1} * \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001262\end{cfuncdesc}
1263
1264
1265\begin{cfuncdesc}{PyObject*}{PyNumber_Divide}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001266Returns the result of dividing \var{o1} by \var{o2}, or \NULL{} on
1267failure.
1268This is the equivalent of the Python expression \samp{\var{o1} /
1269\var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001270\end{cfuncdesc}
1271
1272
1273\begin{cfuncdesc}{PyObject*}{PyNumber_Remainder}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001274Returns the remainder of dividing \var{o1} by \var{o2}, or \NULL{} on
1275failure. This is the equivalent of the Python expression
1276\samp{\var{o1} \% \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001277\end{cfuncdesc}
1278
1279
1280\begin{cfuncdesc}{PyObject*}{PyNumber_Divmod}{PyObject *o1, PyObject *o2}
Fred Drake53fb7721998-02-16 06:23:20 +00001281See the built-in function \function{divmod()}\bifuncindex{divmod}.
1282Returns \NULL{} on failure. This is the equivalent of the Python
1283expression \samp{divmod(\var{o1}, \var{o2})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001284\end{cfuncdesc}
1285
1286
1287\begin{cfuncdesc}{PyObject*}{PyNumber_Power}{PyObject *o1, PyObject *o2, PyObject *o3}
Fred Drake53fb7721998-02-16 06:23:20 +00001288See the built-in function \function{pow()}\bifuncindex{pow}. Returns
1289\NULL{} on failure. This is the equivalent of the Python expression
Fred Drakee058b4f1998-02-16 06:15:35 +00001290\samp{pow(\var{o1}, \var{o2}, \var{o3})}, where \var{o3} is optional.
1291If \var{o3} is to be ignored, pass \code{Py_None} in its place.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001292\end{cfuncdesc}
1293
1294
1295\begin{cfuncdesc}{PyObject*}{PyNumber_Negative}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001296Returns the negation of \var{o} on success, or \NULL{} on failure.
1297This is the equivalent of the Python expression \samp{-\var{o}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001298\end{cfuncdesc}
1299
1300
1301\begin{cfuncdesc}{PyObject*}{PyNumber_Positive}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001302Returns \var{o} on success, or \NULL{} on failure.
1303This is the equivalent of the Python expression \samp{+\var{o}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001304\end{cfuncdesc}
1305
1306
1307\begin{cfuncdesc}{PyObject*}{PyNumber_Absolute}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001308Returns the absolute value of \var{o}, or \NULL{} on failure. This is
1309the equivalent of the Python expression \samp{abs(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001310\end{cfuncdesc}
1311
1312
1313\begin{cfuncdesc}{PyObject*}{PyNumber_Invert}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001314Returns the bitwise negation of \var{o} on success, or \NULL{} on
1315failure. This is the equivalent of the Python expression
1316\samp{\~\var{o}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001317\end{cfuncdesc}
1318
1319
1320\begin{cfuncdesc}{PyObject*}{PyNumber_Lshift}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001321Returns the result of left shifting \var{o1} by \var{o2} on success,
1322or \NULL{} on failure. This is the equivalent of the Python
1323expression \samp{\var{o1} << \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001324\end{cfuncdesc}
1325
1326
1327\begin{cfuncdesc}{PyObject*}{PyNumber_Rshift}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001328Returns the result of right shifting \var{o1} by \var{o2} on success,
1329or \NULL{} on failure. This is the equivalent of the Python
1330expression \samp{\var{o1} >> \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001331\end{cfuncdesc}
1332
1333
1334\begin{cfuncdesc}{PyObject*}{PyNumber_And}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001335Returns the result of ``anding'' \var{o2} and \var{o2} on success and
1336\NULL{} on failure. This is the equivalent of the Python
1337expression \samp{\var{o1} and \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001338\end{cfuncdesc}
1339
1340
1341\begin{cfuncdesc}{PyObject*}{PyNumber_Xor}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001342Returns the bitwise exclusive or of \var{o1} by \var{o2} on success,
1343or \NULL{} on failure. This is the equivalent of the Python
1344expression \samp{\var{o1} \^{ }\var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001345\end{cfuncdesc}
1346
1347\begin{cfuncdesc}{PyObject*}{PyNumber_Or}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001348Returns the result of \var{o1} and \var{o2} on success, or \NULL{} on
1349failure. This is the equivalent of the Python expression
1350\samp{\var{o1} or \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001351\end{cfuncdesc}
1352
1353
Fred Drakee058b4f1998-02-16 06:15:35 +00001354\begin{cfuncdesc}{PyObject*}{PyNumber_Coerce}{PyObject **p1, PyObject **p2}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001355This function takes the addresses of two variables of type
1356\code{PyObject*}.
1357
Fred Drakee058b4f1998-02-16 06:15:35 +00001358If the objects pointed to by \code{*\var{p1}} and \code{*\var{p2}}
1359have the same type, increment their reference count and return
1360\code{0} (success). If the objects can be converted to a common
1361numeric type, replace \code{*p1} and \code{*p2} by their converted
1362value (with 'new' reference counts), and return \code{0}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001363If no conversion is possible, or if some other error occurs,
Fred Drakee058b4f1998-02-16 06:15:35 +00001364return \code{-1} (failure) and don't increment the reference counts.
1365The call \code{PyNumber_Coerce(\&o1, \&o2)} is equivalent to the
1366Python statement \samp{\var{o1}, \var{o2} = coerce(\var{o1},
1367\var{o2})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001368\end{cfuncdesc}
1369
1370
1371\begin{cfuncdesc}{PyObject*}{PyNumber_Int}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001372Returns the \var{o} converted to an integer object on success, or
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001373\NULL{} on failure. This is the equivalent of the Python
Fred Drakee058b4f1998-02-16 06:15:35 +00001374expression \samp{int(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001375\end{cfuncdesc}
1376
1377
1378\begin{cfuncdesc}{PyObject*}{PyNumber_Long}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001379Returns the \var{o} converted to a long integer object on success,
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001380or \NULL{} on failure. This is the equivalent of the Python
Fred Drakee058b4f1998-02-16 06:15:35 +00001381expression \samp{long(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001382\end{cfuncdesc}
1383
1384
1385\begin{cfuncdesc}{PyObject*}{PyNumber_Float}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001386Returns the \var{o} converted to a float object on success, or \NULL{}
1387on failure. This is the equivalent of the Python expression
1388\samp{float(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001389\end{cfuncdesc}
1390
1391
Fred Drakef44617d1998-02-12 20:57:15 +00001392\section{Sequence Protocol}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001393
1394\begin{cfuncdesc}{int}{PySequence_Check}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001395Return \code{1} if the object provides sequence protocol, and \code{0}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001396otherwise.
1397This function always succeeds.
1398\end{cfuncdesc}
1399
1400
1401\begin{cfuncdesc}{PyObject*}{PySequence_Concat}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001402Return the concatenation of \var{o1} and \var{o2} on success, and \NULL{} on
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001403failure. This is the equivalent of the Python
Fred Drakee058b4f1998-02-16 06:15:35 +00001404expression \samp{\var{o1} + \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001405\end{cfuncdesc}
1406
1407
1408\begin{cfuncdesc}{PyObject*}{PySequence_Repeat}{PyObject *o, int count}
Fred Drakee058b4f1998-02-16 06:15:35 +00001409Return the result of repeating sequence object \var{o} \var{count}
1410times, or \NULL{} on failure. This is the equivalent of the Python
1411expression \samp{\var{o} * \var{count}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001412\end{cfuncdesc}
1413
1414
1415\begin{cfuncdesc}{PyObject*}{PySequence_GetItem}{PyObject *o, int i}
Fred Drakee058b4f1998-02-16 06:15:35 +00001416Return the \var{i}th element of \var{o}, or \NULL{} on failure. This
1417is the equivalent of the Python expression \samp{\var{o}[\var{i}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001418\end{cfuncdesc}
1419
1420
1421\begin{cfuncdesc}{PyObject*}{PySequence_GetSlice}{PyObject *o, int i1, int i2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001422Return the slice of sequence object \var{o} between \var{i1} and
1423\var{i2}, or \NULL{} on failure. This is the equivalent of the Python
1424expression \samp{\var{o}[\var{i1}:\var{i2}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001425\end{cfuncdesc}
1426
1427
1428\begin{cfuncdesc}{int}{PySequence_SetItem}{PyObject *o, int i, PyObject *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001429Assign object \var{v} to the \var{i}th element of \var{o}.
1430Returns \code{-1} on failure. This is the equivalent of the Python
1431statement \samp{\var{o}[\var{i}] = \var{v}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001432\end{cfuncdesc}
1433
1434\begin{cfuncdesc}{int}{PySequence_DelItem}{PyObject *o, int i}
Fred Drakee058b4f1998-02-16 06:15:35 +00001435Delete the \var{i}th element of object \var{v}. Returns
1436\code{-1} on failure. This is the equivalent of the Python
1437statement \samp{del \var{o}[\var{i}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001438\end{cfuncdesc}
1439
1440\begin{cfuncdesc}{int}{PySequence_SetSlice}{PyObject *o, int i1, int i2, PyObject *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001441Assign the sequence object \var{v} to the slice in sequence
1442object \var{o} from \var{i1} to \var{i2}. This is the equivalent of
1443the Python statement \samp{\var{o}[\var{i1}:\var{i2}] = \var{v}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001444\end{cfuncdesc}
1445
1446\begin{cfuncdesc}{int}{PySequence_DelSlice}{PyObject *o, int i1, int i2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001447Delete the slice in sequence object \var{o} from \var{i1} to \var{i2}.
1448Returns \code{-1} on failure. This is the equivalent of the Python
1449statement \samp{del \var{o}[\var{i1}:\var{i2}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001450\end{cfuncdesc}
1451
1452\begin{cfuncdesc}{PyObject*}{PySequence_Tuple}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001453Returns the \var{o} as a tuple on success, and \NULL{} on failure.
1454This is equivalent to the Python expression \code{tuple(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001455\end{cfuncdesc}
1456
1457\begin{cfuncdesc}{int}{PySequence_Count}{PyObject *o, PyObject *value}
Fred Drakee058b4f1998-02-16 06:15:35 +00001458Return the number of occurrences of \var{value} in \var{o}, that is,
1459return the number of keys for which \code{\var{o}[\var{key}] ==
1460\var{value}}. On failure, return \code{-1}. This is equivalent to
1461the Python expression \samp{\var{o}.count(\var{value})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001462\end{cfuncdesc}
1463
1464\begin{cfuncdesc}{int}{PySequence_In}{PyObject *o, PyObject *value}
Fred Drakee058b4f1998-02-16 06:15:35 +00001465Determine if \var{o} contains \var{value}. If an item in \var{o} is
1466equal to \var{value}, return \code{1}, otherwise return \code{0}. On
1467error, return \code{-1}. This is equivalent to the Python expression
1468\samp{\var{value} in \var{o}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001469\end{cfuncdesc}
1470
1471\begin{cfuncdesc}{int}{PySequence_Index}{PyObject *o, PyObject *value}
Fred Drakee058b4f1998-02-16 06:15:35 +00001472Return the first index \var{i} for which \code{\var{o}[\var{i}] ==
1473\var{value}}. On error, return \code{-1}. This is equivalent to
1474the Python expression \samp{\var{o}.index(\var{value})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001475\end{cfuncdesc}
1476
Fred Drakef44617d1998-02-12 20:57:15 +00001477\section{Mapping Protocol}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001478
1479\begin{cfuncdesc}{int}{PyMapping_Check}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001480Return \code{1} if the object provides mapping protocol, and \code{0}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001481otherwise.
1482This function always succeeds.
1483\end{cfuncdesc}
1484
1485
1486\begin{cfuncdesc}{int}{PyMapping_Length}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001487Returns the number of keys in object \var{o} on success, and \code{-1}
1488on failure. For objects that do not provide sequence protocol,
1489this is equivalent to the Python expression \samp{len(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001490\end{cfuncdesc}
1491
1492
1493\begin{cfuncdesc}{int}{PyMapping_DelItemString}{PyObject *o, char *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001494Remove the mapping for object \var{key} from the object \var{o}.
1495Return \code{-1} on failure. This is equivalent to
1496the Python statement \samp{del \var{o}[\var{key}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001497\end{cfuncdesc}
1498
1499
1500\begin{cfuncdesc}{int}{PyMapping_DelItem}{PyObject *o, PyObject *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001501Remove the mapping for object \var{key} from the object \var{o}.
1502Return \code{-1} on failure. This is equivalent to
1503the Python statement \samp{del \var{o}[\var{key}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001504\end{cfuncdesc}
1505
1506
1507\begin{cfuncdesc}{int}{PyMapping_HasKeyString}{PyObject *o, char *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001508On success, return \code{1} if the mapping object has the key \var{key}
1509and \code{0} otherwise. This is equivalent to the Python expression
1510\samp{\var{o}.has_key(\var{key})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001511This function always succeeds.
1512\end{cfuncdesc}
1513
1514
1515\begin{cfuncdesc}{int}{PyMapping_HasKey}{PyObject *o, PyObject *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001516Return \code{1} if the mapping object has the key \var{key} and
1517\code{0} otherwise. This is equivalent to the Python expression
1518\samp{\var{o}.has_key(\var{key})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001519This function always succeeds.
1520\end{cfuncdesc}
1521
1522
1523\begin{cfuncdesc}{PyObject*}{PyMapping_Keys}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001524On success, return a list of the keys in object \var{o}. On
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001525failure, return \NULL{}. This is equivalent to the Python
Fred Drakee058b4f1998-02-16 06:15:35 +00001526expression \samp{\var{o}.keys()}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001527\end{cfuncdesc}
1528
1529
1530\begin{cfuncdesc}{PyObject*}{PyMapping_Values}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001531On success, return a list of the values in object \var{o}. On
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001532failure, return \NULL{}. This is equivalent to the Python
Fred Drakee058b4f1998-02-16 06:15:35 +00001533expression \samp{\var{o}.values()}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001534\end{cfuncdesc}
1535
1536
1537\begin{cfuncdesc}{PyObject*}{PyMapping_Items}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001538On success, return a list of the items in object \var{o}, where
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001539each item is a tuple containing a key-value pair. On
1540failure, return \NULL{}. This is equivalent to the Python
Fred Drakee058b4f1998-02-16 06:15:35 +00001541expression \samp{\var{o}.items()}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001542\end{cfuncdesc}
1543
1544\begin{cfuncdesc}{int}{PyMapping_Clear}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001545Make object \var{o} empty. Returns \code{1} on success and \code{0}
1546on failure. This is equivalent to the Python statement
1547\samp{for key in \var{o}.keys(): del \var{o}[key]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001548\end{cfuncdesc}
1549
1550
1551\begin{cfuncdesc}{PyObject*}{PyMapping_GetItemString}{PyObject *o, char *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001552Return element of \var{o} corresponding to the object \var{key} or
1553\NULL{} on failure. This is the equivalent of the Python expression
1554\samp{\var{o}[\var{key}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001555\end{cfuncdesc}
1556
1557\begin{cfuncdesc}{PyObject*}{PyMapping_SetItemString}{PyObject *o, char *key, PyObject *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001558Map the object \var{key} to the value \var{v} in object \var{o}.
1559Returns \code{-1} on failure. This is the equivalent of the Python
1560statement \samp{\var{o}[\var{key}] = \var{v}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001561\end{cfuncdesc}
1562
1563
1564\section{Constructors}
1565
1566\begin{cfuncdesc}{PyObject*}{PyFile_FromString}{char *file_name, char *mode}
1567On success, returns a new file object that is opened on the
Fred Drakee058b4f1998-02-16 06:15:35 +00001568file given by \var{file_name}, with a file mode given by \var{mode},
1569where \var{mode} has the same semantics as the standard \C{} routine
1570\cfunction{fopen()}. On failure, return \code{-1}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001571\end{cfuncdesc}
1572
1573\begin{cfuncdesc}{PyObject*}{PyFile_FromFile}{FILE *fp, char *file_name, char *mode, int close_on_del}
Fred Drakee058b4f1998-02-16 06:15:35 +00001574Return a new file object for an already opened standard \C{} file
1575pointer, \var{fp}. A file name, \var{file_name}, and open mode,
1576\var{mode}, must be provided as well as a flag, \var{close_on_del},
1577that indicates whether the file is to be closed when the file object
1578is destroyed. On failure, return \code{-1}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001579\end{cfuncdesc}
1580
1581\begin{cfuncdesc}{PyObject*}{PyFloat_FromDouble}{double v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001582Returns a new float object with the value \var{v} on success, and
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001583\NULL{} on failure.
1584\end{cfuncdesc}
1585
1586\begin{cfuncdesc}{PyObject*}{PyInt_FromLong}{long v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001587Returns a new int object with the value \var{v} on success, and
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001588\NULL{} on failure.
1589\end{cfuncdesc}
1590
Fred Drakee058b4f1998-02-16 06:15:35 +00001591\begin{cfuncdesc}{PyObject*}{PyList_New}{int len}
1592Returns a new list of length \var{len} on success, and \NULL{} on
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001593failure.
1594\end{cfuncdesc}
1595
1596\begin{cfuncdesc}{PyObject*}{PyLong_FromLong}{long v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001597Returns a new long object with the value \var{v} on success, and
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001598\NULL{} on failure.
1599\end{cfuncdesc}
1600
1601\begin{cfuncdesc}{PyObject*}{PyLong_FromDouble}{double v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001602Returns a new long object with the value \var{v} on success, and
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001603\NULL{} on failure.
1604\end{cfuncdesc}
1605
1606\begin{cfuncdesc}{PyObject*}{PyDict_New}{}
1607Returns a new empty dictionary on success, and \NULL{} on
1608failure.
1609\end{cfuncdesc}
1610
1611\begin{cfuncdesc}{PyObject*}{PyString_FromString}{char *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001612Returns a new string object with the value \var{v} on success, and
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001613\NULL{} on failure.
1614\end{cfuncdesc}
1615
Fred Drakee058b4f1998-02-16 06:15:35 +00001616\begin{cfuncdesc}{PyObject*}{PyString_FromStringAndSize}{char *v, int len}
1617Returns a new string object with the value \var{v} and length
1618\var{len} on success, and \NULL{} on failure. If \var{v} is \NULL{},
1619the contents of the string are uninitialized.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001620\end{cfuncdesc}
1621
Fred Drakee058b4f1998-02-16 06:15:35 +00001622\begin{cfuncdesc}{PyObject*}{PyTuple_New}{int len}
1623Returns a new tuple of length \var{len} on success, and \NULL{} on
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001624failure.
1625\end{cfuncdesc}
1626
1627
1628\chapter{Concrete Objects Layer}
1629
1630The functions in this chapter are specific to certain Python object
1631types. Passing them an object of the wrong type is not a good idea;
1632if you receive an object from a Python program and you are not sure
1633that it has the right type, you must perform a type check first;
1634e.g. to check that an object is a dictionary, use
Fred Drakee5bf8b21998-02-12 21:22:28 +00001635\cfunction{PyDict_Check()}. The chapter is structured like the
1636``family tree'' of Python object types.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001637
1638
Fred Drakee5bf8b21998-02-12 21:22:28 +00001639\section{Fundamental Objects}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001640
Fred Drakee5bf8b21998-02-12 21:22:28 +00001641This section describes Python type objects and the singleton object
1642\code{None}.
1643
1644
1645\subsection{Type Objects}
1646
1647\begin{ctypedesc}{PyTypeObject}
1648
1649\end{ctypedesc}
1650
1651\begin{cvardesc}{PyObject *}{PyType_Type}
1652
1653\end{cvardesc}
1654
1655
1656\subsection{The None Object}
1657
1658\begin{cvardesc}{PyObject *}{Py_None}
1659XXX macro
1660\end{cvardesc}
1661
1662
1663\section{Sequence Objects}
1664
1665Generic operations on sequence objects were discussed in the previous
1666chapter; this section deals with the specific kinds of sequence
1667objects that are intrinsic to the Python language.
1668
1669
1670\subsection{String Objects}
1671
1672\begin{ctypedesc}{PyStringObject}
1673This subtype of \code{PyObject} represents a Python string object.
1674\end{ctypedesc}
1675
1676\begin{cvardesc}{PyTypeObject}{PyString_Type}
1677This instance of \code{PyTypeObject} represents the Python string type.
1678\end{cvardesc}
1679
1680\begin{cfuncdesc}{int}{PyString_Check}{PyObject *o}
1681
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001682\end{cfuncdesc}
1683
Fred Drakee5bf8b21998-02-12 21:22:28 +00001684\begin{cfuncdesc}{PyObject *}{PyString_FromStringAndSize}{const char *, int}
1685
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001686\end{cfuncdesc}
1687
Fred Drakee5bf8b21998-02-12 21:22:28 +00001688\begin{cfuncdesc}{PyObject *}{PyString_FromString}{const char *}
1689
Guido van Rossumae110af1997-05-22 20:11:52 +00001690\end{cfuncdesc}
1691
Fred Drakee5bf8b21998-02-12 21:22:28 +00001692\begin{cfuncdesc}{int}{PyString_Size}{PyObject *}
1693
Guido van Rossumae110af1997-05-22 20:11:52 +00001694\end{cfuncdesc}
1695
Fred Drakee5bf8b21998-02-12 21:22:28 +00001696\begin{cfuncdesc}{char *}{PyString_AsString}{PyObject *}
1697
1698\end{cfuncdesc}
1699
1700\begin{cfuncdesc}{void}{PyString_Concat}{PyObject **, PyObject *}
1701
1702\end{cfuncdesc}
1703
1704\begin{cfuncdesc}{void}{PyString_ConcatAndDel}{PyObject **, PyObject *}
1705
1706\end{cfuncdesc}
1707
1708\begin{cfuncdesc}{int}{_PyString_Resize}{PyObject **, int}
1709
1710\end{cfuncdesc}
1711
1712\begin{cfuncdesc}{PyObject *}{PyString_Format}{PyObject *, PyObject *}
1713
1714\end{cfuncdesc}
1715
1716\begin{cfuncdesc}{void}{PyString_InternInPlace}{PyObject **}
1717
1718\end{cfuncdesc}
1719
1720\begin{cfuncdesc}{PyObject *}{PyString_InternFromString}{const char *}
1721
1722\end{cfuncdesc}
1723
1724\begin{cfuncdesc}{char *}{PyString_AS_STRING}{PyStringObject *}
1725
1726\end{cfuncdesc}
1727
1728\begin{cfuncdesc}{int}{PyString_GET_SIZE}{PyStringObject *}
1729
1730\end{cfuncdesc}
1731
1732
1733\subsection{Tuple Objects}
1734
1735\begin{ctypedesc}{PyTupleObject}
1736This subtype of \code{PyObject} represents a Python tuple object.
1737\end{ctypedesc}
1738
1739\begin{cvardesc}{PyTypeObject}{PyTuple_Type}
1740This instance of \code{PyTypeObject} represents the Python tuple type.
1741\end{cvardesc}
1742
1743\begin{cfuncdesc}{int}{PyTuple_Check}{PyObject *p}
1744Return true if the argument is a tuple object.
1745\end{cfuncdesc}
1746
1747\begin{cfuncdesc}{PyTupleObject *}{PyTuple_New}{int s}
Fred Drakee058b4f1998-02-16 06:15:35 +00001748Return a new tuple object of size \var{s}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001749\end{cfuncdesc}
1750
1751\begin{cfuncdesc}{int}{PyTuple_Size}{PyTupleObject *p}
Fred Drakee058b4f1998-02-16 06:15:35 +00001752Takes a pointer to a tuple object, and returns the size
Fred Drakee5bf8b21998-02-12 21:22:28 +00001753of that tuple.
1754\end{cfuncdesc}
1755
1756\begin{cfuncdesc}{PyObject *}{PyTuple_GetItem}{PyTupleObject *p, int pos}
Fred Drakee058b4f1998-02-16 06:15:35 +00001757Returns the object at position \var{pos} in the tuple pointed
1758to by \var{p}. If \var{pos} is out of bounds, returns \NULL{} and
1759raises an \exception{IndexError} exception.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001760\end{cfuncdesc}
1761
1762\begin{cfuncdesc}{PyObject *}{PyTuple_GET_ITEM}{PyTupleObject *p, int pos}
Fred Drakee058b4f1998-02-16 06:15:35 +00001763Does the same, but does no checking of its arguments.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001764\end{cfuncdesc}
1765
1766\begin{cfuncdesc}{PyTupleObject *}{PyTuple_GetSlice}{PyTupleObject *p,
1767 int low,
1768 int high}
Fred Drakee058b4f1998-02-16 06:15:35 +00001769Takes a slice of the tuple pointed to by \var{p} from
1770\var{low} to \var{high} and returns it as a new tuple.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001771\end{cfuncdesc}
1772
1773\begin{cfuncdesc}{int}{PyTuple_SetItem}{PyTupleObject *p,
1774 int pos,
1775 PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001776Inserts a reference to object \var{o} at position \var{pos} of
1777the tuple pointed to by \var{p}. It returns \code{0} on success.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001778\end{cfuncdesc}
1779
1780\begin{cfuncdesc}{void}{PyTuple_SET_ITEM}{PyTupleObject *p,
1781 int pos,
1782 PyObject *o}
1783
Fred Drakee058b4f1998-02-16 06:15:35 +00001784Does the same, but does no error checking, and
Fred Drakee5bf8b21998-02-12 21:22:28 +00001785should \emph{only} be used to fill in brand new tuples.
1786\end{cfuncdesc}
1787
1788\begin{cfuncdesc}{PyTupleObject *}{_PyTuple_Resize}{PyTupleObject *p,
1789 int new,
1790 int last_is_sticky}
Fred Drakee058b4f1998-02-16 06:15:35 +00001791Can be used to resize a tuple. Because tuples are
Fred Drakee5bf8b21998-02-12 21:22:28 +00001792\emph{supposed} to be immutable, this should only be used if there is only
1793one module referencing the object. Do \emph{not} use this if the tuple may
Fred Drakee058b4f1998-02-16 06:15:35 +00001794already be known to some other part of the code. \var{last_is_sticky} is
1795a flag --- if set, the tuple will grow or shrink at the front, otherwise
Fred Drakee5bf8b21998-02-12 21:22:28 +00001796it will grow or shrink at the end. Think of this as destroying the old
1797tuple and creating a new one, only more efficiently.
1798\end{cfuncdesc}
1799
1800
1801\subsection{List Objects}
1802
1803\begin{ctypedesc}{PyListObject}
1804This subtype of \code{PyObject} represents a Python list object.
1805\end{ctypedesc}
1806
1807\begin{cvardesc}{PyTypeObject}{PyList_Type}
1808This instance of \code{PyTypeObject} represents the Python list type.
1809\end{cvardesc}
1810
1811\begin{cfuncdesc}{int}{PyList_Check}{PyObject *p}
Fred Drakee058b4f1998-02-16 06:15:35 +00001812Returns true if its argument is a \code{PyListObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001813\end{cfuncdesc}
1814
1815\begin{cfuncdesc}{PyObject *}{PyList_New}{int size}
1816
1817\end{cfuncdesc}
1818
1819\begin{cfuncdesc}{int}{PyList_Size}{PyObject *}
1820
1821\end{cfuncdesc}
1822
1823\begin{cfuncdesc}{PyObject *}{PyList_GetItem}{PyObject *, int}
1824
1825\end{cfuncdesc}
1826
1827\begin{cfuncdesc}{int}{PyList_SetItem}{PyObject *, int, PyObject *}
1828
1829\end{cfuncdesc}
1830
1831\begin{cfuncdesc}{int}{PyList_Insert}{PyObject *, int, PyObject *}
1832
1833\end{cfuncdesc}
1834
1835\begin{cfuncdesc}{int}{PyList_Append}{PyObject *, PyObject *}
1836
1837\end{cfuncdesc}
1838
1839\begin{cfuncdesc}{PyObject *}{PyList_GetSlice}{PyObject *, int, int}
1840
1841\end{cfuncdesc}
1842
1843\begin{cfuncdesc}{int}{PyList_SetSlice}{PyObject *, int, int, PyObject *}
1844
1845\end{cfuncdesc}
1846
1847\begin{cfuncdesc}{int}{PyList_Sort}{PyObject *}
1848
1849\end{cfuncdesc}
1850
1851\begin{cfuncdesc}{int}{PyList_Reverse}{PyObject *}
1852
1853\end{cfuncdesc}
1854
1855\begin{cfuncdesc}{PyObject *}{PyList_AsTuple}{PyObject *}
1856
1857\end{cfuncdesc}
1858
1859\begin{cfuncdesc}{PyObject *}{PyList_GET_ITEM}{PyObject *list, int i}
1860
1861\end{cfuncdesc}
1862
1863\begin{cfuncdesc}{int}{PyList_GET_SIZE}{PyObject *list}
1864
1865\end{cfuncdesc}
1866
1867
1868\section{Mapping Objects}
1869
1870\subsection{Dictionary Objects}
1871
1872\begin{ctypedesc}{PyDictObject}
1873This subtype of \code{PyObject} represents a Python dictionary object.
1874\end{ctypedesc}
1875
1876\begin{cvardesc}{PyTypeObject}{PyDict_Type}
1877This instance of \code{PyTypeObject} represents the Python dictionary type.
1878\end{cvardesc}
1879
1880\begin{cfuncdesc}{int}{PyDict_Check}{PyObject *p}
Fred Drakee058b4f1998-02-16 06:15:35 +00001881Returns true if its argument is a \code{PyDictObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001882\end{cfuncdesc}
1883
1884\begin{cfuncdesc}{PyDictObject *}{PyDict_New}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00001885Returns a new empty dictionary.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001886\end{cfuncdesc}
1887
1888\begin{cfuncdesc}{void}{PyDict_Clear}{PyDictObject *p}
Fred Drakee058b4f1998-02-16 06:15:35 +00001889Empties an existing dictionary of all key/value pairs.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001890\end{cfuncdesc}
1891
1892\begin{cfuncdesc}{int}{PyDict_SetItem}{PyDictObject *p,
1893 PyObject *key,
1894 PyObject *val}
Fred Drakee058b4f1998-02-16 06:15:35 +00001895Inserts \var{value} into the dictionary with a key of \var{key}. Both
1896\var{key} and \var{value} should be PyObjects, and \var{key} should be
1897hashable.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001898\end{cfuncdesc}
1899
1900\begin{cfuncdesc}{int}{PyDict_SetItemString}{PyDictObject *p,
1901 char *key,
1902 PyObject *val}
Fred Drakee058b4f1998-02-16 06:15:35 +00001903Inserts \var{value} into the dictionary using \var{key}
1904as a key. \var{key} should be a \code{char *}. The key object is
1905created using \code{PyString_FromString(\var{key})}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001906\end{cfuncdesc}
1907
1908\begin{cfuncdesc}{int}{PyDict_DelItem}{PyDictObject *p, PyObject *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001909Removes the entry in dictionary \var{p} with key \var{key}.
1910\var{key} is a PyObject.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001911\end{cfuncdesc}
1912
1913\begin{cfuncdesc}{int}{PyDict_DelItemString}{PyDictObject *p, char *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001914Removes the entry in dictionary \var{p} which has a key
1915specified by the \code{char *}\var{key}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001916\end{cfuncdesc}
1917
1918\begin{cfuncdesc}{PyObject *}{PyDict_GetItem}{PyDictObject *p, PyObject *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001919Returns the object from dictionary \var{p} which has a key
1920\var{key}. Returns \NULL{} if the key \var{key} is not present.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001921\end{cfuncdesc}
1922
1923\begin{cfuncdesc}{PyObject *}{PyDict_GetItemString}{PyDictObject *p, char *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001924Does the same, but \var{key} is specified as a
Fred Drakee5bf8b21998-02-12 21:22:28 +00001925\code{char *}, rather than a \code{PyObject *}.
1926\end{cfuncdesc}
1927
1928\begin{cfuncdesc}{PyListObject *}{PyDict_Items}{PyDictObject *p}
Fred Drakee058b4f1998-02-16 06:15:35 +00001929Returns a \code{PyListObject} containing all the items
1930from the dictionary, as in the mapping method \method{items()} (see
1931the \emph{Python Library Reference}).
Fred Drakee5bf8b21998-02-12 21:22:28 +00001932\end{cfuncdesc}
1933
1934\begin{cfuncdesc}{PyListObject *}{PyDict_Keys}{PyDictObject *p}
Fred Drakee058b4f1998-02-16 06:15:35 +00001935Returns a \code{PyListObject} containing all the keys
1936from the dictionary, as in the mapping method \method{keys()} (see the
1937\emph{Python Library Reference}).
Fred Drakee5bf8b21998-02-12 21:22:28 +00001938\end{cfuncdesc}
1939
1940\begin{cfuncdesc}{PyListObject *}{PyDict_Values}{PyDictObject *p}
Fred Drakee058b4f1998-02-16 06:15:35 +00001941Returns a \code{PyListObject} containing all the values
1942from the dictionary \var{p}, as in the mapping method
1943\method{values()} (see the \emph{Python Library Reference}).
Fred Drakee5bf8b21998-02-12 21:22:28 +00001944\end{cfuncdesc}
1945
1946\begin{cfuncdesc}{int}{PyDict_Size}{PyDictObject *p}
Fred Drakee058b4f1998-02-16 06:15:35 +00001947Returns the number of items in the dictionary.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001948\end{cfuncdesc}
1949
1950\begin{cfuncdesc}{int}{PyDict_Next}{PyDictObject *p,
1951 int ppos,
1952 PyObject **pkey,
1953 PyObject **pvalue}
1954
1955\end{cfuncdesc}
1956
1957
1958\section{Numeric Objects}
1959
1960\subsection{Plain Integer Objects}
1961
1962\begin{ctypedesc}{PyIntObject}
1963This subtype of \code{PyObject} represents a Python integer object.
1964\end{ctypedesc}
1965
1966\begin{cvardesc}{PyTypeObject}{PyInt_Type}
1967This instance of \code{PyTypeObject} represents the Python plain
1968integer type.
1969\end{cvardesc}
1970
1971\begin{cfuncdesc}{int}{PyInt_Check}{PyObject *}
1972
1973\end{cfuncdesc}
1974
1975\begin{cfuncdesc}{PyIntObject *}{PyInt_FromLong}{long ival}
Fred Drakee058b4f1998-02-16 06:15:35 +00001976Creates a new integer object with a value of \var{ival}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001977
1978The current implementation keeps an array of integer objects for all
Fred Drakee058b4f1998-02-16 06:15:35 +00001979integers between \code{-1} and \code{100}, when you create an int in
1980that range you actually just get back a reference to the existing
1981object. So it should be possible to change the value of \code{1}. I
1982suspect the behaviour of python in this case is undefined. :-)
Fred Drakee5bf8b21998-02-12 21:22:28 +00001983\end{cfuncdesc}
1984
1985\begin{cfuncdesc}{long}{PyInt_AS_LONG}{PyIntObject *io}
Fred Drakee058b4f1998-02-16 06:15:35 +00001986Returns the value of the object \var{io}. No error checking is
1987performed.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001988\end{cfuncdesc}
1989
1990\begin{cfuncdesc}{long}{PyInt_AsLong}{PyObject *io}
Fred Drakee058b4f1998-02-16 06:15:35 +00001991Will first attempt to cast the object to a \code{PyIntObject}, if
1992it is not already one, and then return its value.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001993\end{cfuncdesc}
1994
1995\begin{cfuncdesc}{long}{PyInt_GetMax}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00001996Returns the systems idea of the largest integer it can handle
1997(\constant{LONG_MAX}, as defined in the system header files).
Fred Drakee5bf8b21998-02-12 21:22:28 +00001998\end{cfuncdesc}
1999
2000
2001\subsection{Long Integer Objects}
2002
2003\begin{ctypedesc}{PyLongObject}
Fred Drakee058b4f1998-02-16 06:15:35 +00002004This subtype of \code{PyObject} represents a Python long integer
2005object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002006\end{ctypedesc}
2007
2008\begin{cvardesc}{PyTypeObject}{PyLong_Type}
Fred Drakee058b4f1998-02-16 06:15:35 +00002009This instance of \code{PyTypeObject} represents the Python long
2010integer type.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002011\end{cvardesc}
2012
2013\begin{cfuncdesc}{int}{PyLong_Check}{PyObject *p}
Fred Drakee058b4f1998-02-16 06:15:35 +00002014Returns true if its argument is a \code{PyLongObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002015\end{cfuncdesc}
2016
2017\begin{cfuncdesc}{PyObject *}{PyLong_FromLong}{long}
2018
2019\end{cfuncdesc}
2020
2021\begin{cfuncdesc}{PyObject *}{PyLong_FromUnsignedLong}{unsigned long}
2022
2023\end{cfuncdesc}
2024
2025\begin{cfuncdesc}{PyObject *}{PyLong_FromDouble}{double}
2026
2027\end{cfuncdesc}
2028
2029\begin{cfuncdesc}{long}{PyLong_AsLong}{PyObject *}
2030
2031\end{cfuncdesc}
2032
2033\begin{cfuncdesc}{unsigned long}{PyLong_AsUnsignedLong}{PyObject }
2034
2035\end{cfuncdesc}
2036
2037\begin{cfuncdesc}{double}{PyLong_AsDouble}{PyObject *}
2038
2039\end{cfuncdesc}
2040
2041\begin{cfuncdesc}{PyObject *}{PyLong_FromString}{char *, char **, int}
2042
2043\end{cfuncdesc}
2044
2045
2046\subsection{Floating Point Objects}
2047
2048\begin{ctypedesc}{PyFloatObject}
Fred Drakee058b4f1998-02-16 06:15:35 +00002049This subtype of \code{PyObject} represents a Python floating point
2050object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002051\end{ctypedesc}
2052
2053\begin{cvardesc}{PyTypeObject}{PyFloat_Type}
Fred Drakee058b4f1998-02-16 06:15:35 +00002054This instance of \code{PyTypeObject} represents the Python floating
Fred Drakee5bf8b21998-02-12 21:22:28 +00002055point type.
2056\end{cvardesc}
2057
2058\begin{cfuncdesc}{int}{PyFloat_Check}{PyObject *p}
Fred Drakee058b4f1998-02-16 06:15:35 +00002059Returns true if its argument is a \code{PyFloatObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002060\end{cfuncdesc}
2061
2062\begin{cfuncdesc}{PyObject *}{PyFloat_FromDouble}{double}
2063
2064\end{cfuncdesc}
2065
2066\begin{cfuncdesc}{double}{PyFloat_AsDouble}{PyObject *}
2067
2068\end{cfuncdesc}
2069
2070\begin{cfuncdesc}{double}{PyFloat_AS_DOUBLE}{PyFloatObject *}
2071
2072\end{cfuncdesc}
2073
2074
2075\subsection{Complex Number Objects}
2076
2077\begin{ctypedesc}{Py_complex}
Fred Drake4de05a91998-02-16 14:25:26 +00002078The \C{} structure which corresponds to the value portion of a Python
2079complex number object. Most of the functions for dealing with complex
2080number objects use structures of this type as input or output values,
2081as appropriate. It is defined as:
2082
Fred Drakee058b4f1998-02-16 06:15:35 +00002083\begin{verbatim}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002084typedef struct {
2085 double real;
2086 double imag;
Fred Drake4de05a91998-02-16 14:25:26 +00002087} Py_complex;
Fred Drakee058b4f1998-02-16 06:15:35 +00002088\end{verbatim}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002089\end{ctypedesc}
2090
2091\begin{ctypedesc}{PyComplexObject}
2092This subtype of \code{PyObject} represents a Python complex number object.
2093\end{ctypedesc}
2094
2095\begin{cvardesc}{PyTypeObject}{PyComplex_Type}
2096This instance of \code{PyTypeObject} represents the Python complex
2097number type.
2098\end{cvardesc}
2099
2100\begin{cfuncdesc}{int}{PyComplex_Check}{PyObject *p}
Fred Drakee058b4f1998-02-16 06:15:35 +00002101Returns true if its argument is a \code{PyComplexObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002102\end{cfuncdesc}
2103
2104\begin{cfuncdesc}{Py_complex}{_Py_c_sum}{Py_complex, Py_complex}
2105
2106\end{cfuncdesc}
2107
2108\begin{cfuncdesc}{Py_complex}{_Py_c_diff}{Py_complex, Py_complex}
2109
2110\end{cfuncdesc}
2111
2112\begin{cfuncdesc}{Py_complex}{_Py_c_neg}{Py_complex}
2113
2114\end{cfuncdesc}
2115
2116\begin{cfuncdesc}{Py_complex}{_Py_c_prod}{Py_complex, Py_complex}
2117
2118\end{cfuncdesc}
2119
2120\begin{cfuncdesc}{Py_complex}{_Py_c_quot}{Py_complex, Py_complex}
2121
2122\end{cfuncdesc}
2123
2124\begin{cfuncdesc}{Py_complex}{_Py_c_pow}{Py_complex, Py_complex}
2125
2126\end{cfuncdesc}
2127
2128\begin{cfuncdesc}{PyObject *}{PyComplex_FromCComplex}{Py_complex}
2129
2130\end{cfuncdesc}
2131
2132\begin{cfuncdesc}{PyObject *}{PyComplex_FromDoubles}{double real, double imag}
2133
2134\end{cfuncdesc}
2135
2136\begin{cfuncdesc}{double}{PyComplex_RealAsDouble}{PyObject *op}
2137
2138\end{cfuncdesc}
2139
2140\begin{cfuncdesc}{double}{PyComplex_ImagAsDouble}{PyObject *op}
2141
2142\end{cfuncdesc}
2143
2144\begin{cfuncdesc}{Py_complex}{PyComplex_AsCComplex}{PyObject *op}
2145
2146\end{cfuncdesc}
2147
2148
2149
2150\section{Other Objects}
2151
2152\subsection{File Objects}
2153
2154\begin{ctypedesc}{PyFileObject}
2155This subtype of \code{PyObject} represents a Python file object.
2156\end{ctypedesc}
2157
2158\begin{cvardesc}{PyTypeObject}{PyFile_Type}
2159This instance of \code{PyTypeObject} represents the Python file type.
2160\end{cvardesc}
2161
2162\begin{cfuncdesc}{int}{PyFile_Check}{PyObject *p}
Fred Drakee058b4f1998-02-16 06:15:35 +00002163Returns true if its argument is a \code{PyFileObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002164\end{cfuncdesc}
2165
2166\begin{cfuncdesc}{PyObject *}{PyFile_FromString}{char *name, char *mode}
Fred Drakee058b4f1998-02-16 06:15:35 +00002167Creates a new \code{PyFileObject} pointing to the file
2168specified in \var{name} with the mode specified in \var{mode}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002169\end{cfuncdesc}
2170
2171\begin{cfuncdesc}{PyObject *}{PyFile_FromFile}{FILE *fp,
Fred Drakeb92dce31998-02-25 15:40:22 +00002172 char *name, char *mode, int (*close)}
Fred Drakee058b4f1998-02-16 06:15:35 +00002173Creates a new \code{PyFileObject} from the already-open \var{fp}.
2174The function \var{close} will be called when the file should be
2175closed.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002176\end{cfuncdesc}
2177
2178\begin{cfuncdesc}{FILE *}{PyFile_AsFile}{PyFileObject *p}
Fred Drakee058b4f1998-02-16 06:15:35 +00002179Returns the file object associated with \var{p} as a \code{FILE *}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002180\end{cfuncdesc}
2181
2182\begin{cfuncdesc}{PyStringObject *}{PyFile_GetLine}{PyObject *p, int n}
2183undocumented as yet
2184\end{cfuncdesc}
2185
2186\begin{cfuncdesc}{PyStringObject *}{PyFile_Name}{PyObject *p}
Fred Drakee058b4f1998-02-16 06:15:35 +00002187Returns the name of the file specified by \var{p} as a
2188\code{PyStringObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002189\end{cfuncdesc}
2190
2191\begin{cfuncdesc}{void}{PyFile_SetBufSize}{PyFileObject *p, int n}
Fred Drakee058b4f1998-02-16 06:15:35 +00002192Available on systems with \cfunction{setvbuf()} only. This should
2193only be called immediately after file object creation.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002194\end{cfuncdesc}
2195
2196\begin{cfuncdesc}{int}{PyFile_SoftSpace}{PyFileObject *p, int newflag}
Fred Drakee058b4f1998-02-16 06:15:35 +00002197Sets the \code{softspace} attribute of \var{p} to \var{newflag}.
2198Returns the previosu value. This function clears any errors, and will
2199return \code{0} as the previous value if the attribute either does not
2200exist or if there were errors in retrieving it. There is no way to
2201detect errors from this function, but doing so should not be needed.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002202\end{cfuncdesc}
2203
2204\begin{cfuncdesc}{int}{PyFile_WriteObject}{PyObject *obj, PyFileObject *p}
Fred Drakee058b4f1998-02-16 06:15:35 +00002205Writes object \var{obj} to file object \var{p}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002206\end{cfuncdesc}
2207
2208\begin{cfuncdesc}{int}{PyFile_WriteString}{char *s, PyFileObject *p}
Fred Drakee058b4f1998-02-16 06:15:35 +00002209Writes string \var{s} to file object \var{p}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002210\end{cfuncdesc}
2211
2212
2213\subsection{CObjects}
2214
2215XXX
2216
2217
Guido van Rossum4a944d71997-08-14 20:35:38 +00002218\chapter{Initialization, Finalization, and Threads}
2219
Guido van Rossum4a944d71997-08-14 20:35:38 +00002220\begin{cfuncdesc}{void}{Py_Initialize}{}
2221Initialize the Python interpreter. In an application embedding
2222Python, this should be called before using any other Python/C API
Fred Drakee058b4f1998-02-16 06:15:35 +00002223functions; with the exception of \cfunction{Py_SetProgramName()},
2224\cfunction{PyEval_InitThreads()}, \cfunction{PyEval_ReleaseLock()},
2225and \cfunction{PyEval_AcquireLock()}. This initializes the table of
2226loaded modules (\code{sys.modules}), and creates the fundamental
Fred Drake4de05a91998-02-16 14:25:26 +00002227modules \module{__builtin__}\refbimodindex{__builtin__},
2228\module{__main__}\refbimodindex{__main__} and
2229\module{sys}\refbimodindex{sys}. It also initializes the module
2230search path (\code{sys.path}).%
2231\indexiii{module}{search}{path}
2232It does not set \code{sys.argv}; use \cfunction{PySys_SetArgv()} for
2233that. This is a no-op when called for a second time (without calling
Fred Drakee058b4f1998-02-16 06:15:35 +00002234\cfunction{Py_Finalize()} first). There is no return value; it is a
2235fatal error if the initialization fails.
Guido van Rossum42cefd01997-10-05 15:27:29 +00002236\end{cfuncdesc}
2237
2238\begin{cfuncdesc}{int}{Py_IsInitialized}{}
Guido van Rossum42cefd01997-10-05 15:27:29 +00002239Return true (nonzero) when the Python interpreter has been
Fred Drakee058b4f1998-02-16 06:15:35 +00002240initialized, false (zero) if not. After \cfunction{Py_Finalize()} is
2241called, this returns false until \cfunction{Py_Initialize()} is called
Guido van Rossum42cefd01997-10-05 15:27:29 +00002242again.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002243\end{cfuncdesc}
2244
2245\begin{cfuncdesc}{void}{Py_Finalize}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00002246Undo all initializations made by \cfunction{Py_Initialize()} and
2247subsequent use of Python/C API functions, and destroy all
2248sub-interpreters (see \cfunction{Py_NewInterpreter()} below) that were
2249created and not yet destroyed since the last call to
2250\cfunction{Py_Initialize()}. Ideally, this frees all memory allocated
2251by the Python interpreter. This is a no-op when called for a second
2252time (without calling \cfunction{Py_Initialize()} again first). There
2253is no return value; errors during finalization are ignored.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002254
2255This function is provided for a number of reasons. An embedding
2256application might want to restart Python without having to restart the
2257application itself. An application that has loaded the Python
2258interpreter from a dynamically loadable library (or DLL) might want to
2259free all memory allocated by Python before unloading the DLL. During a
2260hunt for memory leaks in an application a developer might want to free
2261all memory allocated by Python before exiting from the application.
2262
Fred Drakee058b4f1998-02-16 06:15:35 +00002263\strong{Bugs and caveats:} The destruction of modules and objects in
Guido van Rossum4a944d71997-08-14 20:35:38 +00002264modules is done in random order; this may cause destructors
Fred Drakee058b4f1998-02-16 06:15:35 +00002265(\method{__del__()} methods) to fail when they depend on other objects
Guido van Rossum4a944d71997-08-14 20:35:38 +00002266(even functions) or modules. Dynamically loaded extension modules
2267loaded by Python are not unloaded. Small amounts of memory allocated
2268by the Python interpreter may not be freed (if you find a leak, please
2269report it). Memory tied up in circular references between objects is
2270not freed. Some memory allocated by extension modules may not be
2271freed. Some extension may not work properly if their initialization
2272routine is called more than once; this can happen if an applcation
Fred Drakee058b4f1998-02-16 06:15:35 +00002273calls \cfunction{Py_Initialize()} and \cfunction{Py_Finalize()} more
2274than once.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002275\end{cfuncdesc}
2276
2277\begin{cfuncdesc}{PyThreadState *}{Py_NewInterpreter}{}
Fred Drake4de05a91998-02-16 14:25:26 +00002278Create a new sub-interpreter. This is an (almost) totally separate
2279environment for the execution of Python code. In particular, the new
2280interpreter has separate, independent versions of all imported
2281modules, including the fundamental modules
2282\module{__builtin__}\refbimodindex{__builtin__},
2283\module{__main__}\refbimodindex{__main__} and
2284\module{sys}\refbimodindex{sys}. The table of loaded modules
2285(\code{sys.modules}) and the module search path (\code{sys.path}) are
2286also separate. The new environment has no \code{sys.argv} variable.
2287It has new standard I/O stream file objects \code{sys.stdin},
2288\code{sys.stdout} and \code{sys.stderr} (however these refer to the
Fred Drakeb0a78731998-01-13 18:51:10 +00002289same underlying \code{FILE} structures in the \C{} library).
Guido van Rossum4a944d71997-08-14 20:35:38 +00002290
2291The return value points to the first thread state created in the new
2292sub-interpreter. This thread state is made the current thread state.
2293Note that no actual thread is created; see the discussion of thread
2294states below. If creation of the new interpreter is unsuccessful,
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002295\NULL{} is returned; no exception is set since the exception state
Guido van Rossum4a944d71997-08-14 20:35:38 +00002296is stored in the current thread state and there may not be a current
2297thread state. (Like all other Python/C API functions, the global
2298interpreter lock must be held before calling this function and is
2299still held when it returns; however, unlike most other Python/C API
2300functions, there needn't be a current thread state on entry.)
2301
2302Extension modules are shared between (sub-)interpreters as follows:
2303the first time a particular extension is imported, it is initialized
2304normally, and a (shallow) copy of its module's dictionary is
2305squirreled away. When the same extension is imported by another
2306(sub-)interpreter, a new module is initialized and filled with the
Fred Drakee058b4f1998-02-16 06:15:35 +00002307contents of this copy; the extension's \code{init} function is not
2308called. Note that this is different from what happens when an
2309extension is imported after the interpreter has been completely
2310re-initialized by calling \cfunction{Py_Finalize()} and
2311\cfunction{Py_Initialize()}; in that case, the extension's \code{init}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002312function \emph{is} called again.
2313
Fred Drakee058b4f1998-02-16 06:15:35 +00002314\strong{Bugs and caveats:} Because sub-interpreters (and the main
Guido van Rossum4a944d71997-08-14 20:35:38 +00002315interpreter) are part of the same process, the insulation between them
Fred Drakee058b4f1998-02-16 06:15:35 +00002316isn't perfect --- for example, using low-level file operations like
Guido van Rossum4a944d71997-08-14 20:35:38 +00002317\code{os.close()} they can (accidentally or maliciously) affect each
2318other's open files. Because of the way extensions are shared between
2319(sub-)interpreters, some extensions may not work properly; this is
2320especially likely when the extension makes use of (static) global
2321variables, or when the extension manipulates its module's dictionary
2322after its initialization. It is possible to insert objects created in
2323one sub-interpreter into a namespace of another sub-interpreter; this
2324should be done with great care to avoid sharing user-defined
2325functions, methods, instances or classes between sub-interpreters,
2326since import operations executed by such objects may affect the
2327wrong (sub-)interpreter's dictionary of loaded modules. (XXX This is
2328a hard-to-fix bug that will be addressed in a future release.)
2329\end{cfuncdesc}
2330
2331\begin{cfuncdesc}{void}{Py_EndInterpreter}{PyThreadState *tstate}
2332Destroy the (sub-)interpreter represented by the given thread state.
2333The given thread state must be the current thread state. See the
2334discussion of thread states below. When the call returns, the current
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002335thread state is \NULL{}. All thread states associated with this
Guido van Rossum4a944d71997-08-14 20:35:38 +00002336interpreted are destroyed. (The global interpreter lock must be held
2337before calling this function and is still held when it returns.)
Fred Drakee058b4f1998-02-16 06:15:35 +00002338\cfunction{Py_Finalize()} will destroy all sub-interpreters that haven't
Guido van Rossum4a944d71997-08-14 20:35:38 +00002339been explicitly destroyed at that point.
2340\end{cfuncdesc}
2341
2342\begin{cfuncdesc}{void}{Py_SetProgramName}{char *name}
Fred Drakee058b4f1998-02-16 06:15:35 +00002343This function should be called before \cfunction{Py_Initialize()} is called
Guido van Rossum4a944d71997-08-14 20:35:38 +00002344for the first time, if it is called at all. It tells the interpreter
Fred Drakee058b4f1998-02-16 06:15:35 +00002345the value of the \code{argv[0]} argument to the \cfunction{main()} function
2346of the program. This is used by \cfunction{Py_GetPath()} and some other
Guido van Rossum4a944d71997-08-14 20:35:38 +00002347functions below to find the Python run-time libraries relative to the
2348interpreter executable. The default value is \code{"python"}. The
2349argument should point to a zero-terminated character string in static
2350storage whose contents will not change for the duration of the
2351program's execution. No code in the Python interpreter will change
2352the contents of this storage.
2353\end{cfuncdesc}
2354
2355\begin{cfuncdesc}{char *}{Py_GetProgramName}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00002356Return the program name set with \cfunction{Py_SetProgramName()}, or the
Guido van Rossum4a944d71997-08-14 20:35:38 +00002357default. The returned string points into static storage; the caller
2358should not modify its value.
2359\end{cfuncdesc}
2360
2361\begin{cfuncdesc}{char *}{Py_GetPrefix}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00002362Return the \emph{prefix} for installed platform-independent files. This
Guido van Rossum4a944d71997-08-14 20:35:38 +00002363is derived through a number of complicated rules from the program name
Fred Drakee058b4f1998-02-16 06:15:35 +00002364set with \cfunction{Py_SetProgramName()} and some environment variables;
Guido van Rossum4a944d71997-08-14 20:35:38 +00002365for example, if the program name is \code{"/usr/local/bin/python"},
2366the prefix is \code{"/usr/local"}. The returned string points into
2367static storage; the caller should not modify its value. This
2368corresponds to the \code{prefix} variable in the top-level
Fred Drakee058b4f1998-02-16 06:15:35 +00002369\file{Makefile} and the \code{--prefix} argument to the
2370\program{configure} script at build time. The value is available to
Fred Drakeb0a78731998-01-13 18:51:10 +00002371Python code as \code{sys.prefix}. It is only useful on \UNIX{}. See
Guido van Rossum4a944d71997-08-14 20:35:38 +00002372also the next function.
2373\end{cfuncdesc}
2374
2375\begin{cfuncdesc}{char *}{Py_GetExecPrefix}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00002376Return the \emph{exec-prefix} for installed platform-\emph{de}pendent
Guido van Rossum4a944d71997-08-14 20:35:38 +00002377files. This is derived through a number of complicated rules from the
Fred Drakee058b4f1998-02-16 06:15:35 +00002378program name set with \cfunction{Py_SetProgramName()} and some environment
Guido van Rossum4a944d71997-08-14 20:35:38 +00002379variables; for example, if the program name is
2380\code{"/usr/local/bin/python"}, the exec-prefix is
2381\code{"/usr/local"}. The returned string points into static storage;
2382the caller should not modify its value. This corresponds to the
Fred Drakee058b4f1998-02-16 06:15:35 +00002383\code{exec_prefix} variable in the top-level \file{Makefile} and the
2384\code{--exec_prefix} argument to the \program{configure} script at build
Guido van Rossum4a944d71997-08-14 20:35:38 +00002385time. The value is available to Python code as
Fred Drakeb0a78731998-01-13 18:51:10 +00002386\code{sys.exec_prefix}. It is only useful on \UNIX{}.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002387
2388Background: The exec-prefix differs from the prefix when platform
2389dependent files (such as executables and shared libraries) are
2390installed in a different directory tree. In a typical installation,
2391platform dependent files may be installed in the
2392\code{"/usr/local/plat"} subtree while platform independent may be
2393installed in \code{"/usr/local"}.
2394
2395Generally speaking, a platform is a combination of hardware and
2396software families, e.g. Sparc machines running the Solaris 2.x
2397operating system are considered the same platform, but Intel machines
2398running Solaris 2.x are another platform, and Intel machines running
2399Linux are yet another platform. Different major revisions of the same
Fred Drakeb0a78731998-01-13 18:51:10 +00002400operating system generally also form different platforms. Non-\UNIX{}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002401operating systems are a different story; the installation strategies
2402on those systems are so different that the prefix and exec-prefix are
2403meaningless, and set to the empty string. Note that compiled Python
2404bytecode files are platform independent (but not independent from the
2405Python version by which they were compiled!).
2406
Fred Drakee058b4f1998-02-16 06:15:35 +00002407System administrators will know how to configure the \program{mount} or
2408\program{automount} programs to share \code{"/usr/local"} between platforms
Guido van Rossum4a944d71997-08-14 20:35:38 +00002409while having \code{"/usr/local/plat"} be a different filesystem for each
2410platform.
2411\end{cfuncdesc}
2412
2413\begin{cfuncdesc}{char *}{Py_GetProgramFullPath}{}
2414Return the full program name of the Python executable; this is
2415computed as a side-effect of deriving the default module search path
Fred Drakee058b4f1998-02-16 06:15:35 +00002416from the program name (set by \cfunction{Py_SetProgramName()} above). The
Guido van Rossum4a944d71997-08-14 20:35:38 +00002417returned string points into static storage; the caller should not
2418modify its value. The value is available to Python code as
Guido van Rossum42cefd01997-10-05 15:27:29 +00002419\code{sys.executable}.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002420\end{cfuncdesc}
2421
2422\begin{cfuncdesc}{char *}{Py_GetPath}{}
Fred Drake4de05a91998-02-16 14:25:26 +00002423\indexiii{module}{search}{path}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002424Return the default module search path; this is computed from the
Fred Drakee058b4f1998-02-16 06:15:35 +00002425program name (set by \cfunction{Py_SetProgramName()} above) and some
Guido van Rossum4a944d71997-08-14 20:35:38 +00002426environment variables. The returned string consists of a series of
2427directory names separated by a platform dependent delimiter character.
Fred Drakee5bc4971998-02-12 23:36:49 +00002428The delimiter character is \code{':'} on \UNIX{}, \code{';'} on
2429DOS/Windows, and \code{'\\n'} (the \ASCII{} newline character) on
2430Macintosh. The returned string points into static storage; the caller
Guido van Rossum4a944d71997-08-14 20:35:38 +00002431should not modify its value. The value is available to Python code
2432as the list \code{sys.path}, which may be modified to change the
2433future search path for loaded modules.
2434
2435% XXX should give the exact rules
2436\end{cfuncdesc}
2437
2438\begin{cfuncdesc}{const char *}{Py_GetVersion}{}
2439Return the version of this Python interpreter. This is a string that
2440looks something like
2441
Guido van Rossum09270b51997-08-15 18:57:32 +00002442\begin{verbatim}
Fred Drakee058b4f1998-02-16 06:15:35 +00002443"1.5 (#67, Dec 31 1997, 22:34:28) [GCC 2.7.2.2]"
Guido van Rossum09270b51997-08-15 18:57:32 +00002444\end{verbatim}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002445
2446The first word (up to the first space character) is the current Python
2447version; the first three characters are the major and minor version
2448separated by a period. The returned string points into static storage;
2449the caller should not modify its value. The value is available to
2450Python code as the list \code{sys.version}.
2451\end{cfuncdesc}
2452
2453\begin{cfuncdesc}{const char *}{Py_GetPlatform}{}
Fred Drakeb0a78731998-01-13 18:51:10 +00002454Return the platform identifier for the current platform. On \UNIX{},
Guido van Rossum4a944d71997-08-14 20:35:38 +00002455this is formed from the ``official'' name of the operating system,
2456converted to lower case, followed by the major revision number; e.g.,
2457for Solaris 2.x, which is also known as SunOS 5.x, the value is
2458\code{"sunos5"}. On Macintosh, it is \code{"mac"}. On Windows, it
2459is \code{"win"}. The returned string points into static storage;
2460the caller should not modify its value. The value is available to
2461Python code as \code{sys.platform}.
2462\end{cfuncdesc}
2463
2464\begin{cfuncdesc}{const char *}{Py_GetCopyright}{}
2465Return the official copyright string for the current Python version,
2466for example
2467
2468\code{"Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam"}
2469
2470The returned string points into static storage; the caller should not
2471modify its value. The value is available to Python code as the list
2472\code{sys.copyright}.
2473\end{cfuncdesc}
2474
2475\begin{cfuncdesc}{const char *}{Py_GetCompiler}{}
2476Return an indication of the compiler used to build the current Python
Fred Drakee058b4f1998-02-16 06:15:35 +00002477version, in square brackets, for example:
Guido van Rossum4a944d71997-08-14 20:35:38 +00002478
Fred Drakee058b4f1998-02-16 06:15:35 +00002479\begin{verbatim}
2480"[GCC 2.7.2.2]"
2481\end{verbatim}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002482
2483The returned string points into static storage; the caller should not
2484modify its value. The value is available to Python code as part of
2485the variable \code{sys.version}.
2486\end{cfuncdesc}
2487
2488\begin{cfuncdesc}{const char *}{Py_GetBuildInfo}{}
2489Return information about the sequence number and build date and time
2490of the current Python interpreter instance, for example
2491
Guido van Rossum09270b51997-08-15 18:57:32 +00002492\begin{verbatim}
2493"#67, Aug 1 1997, 22:34:28"
2494\end{verbatim}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002495
2496The returned string points into static storage; the caller should not
2497modify its value. The value is available to Python code as part of
2498the variable \code{sys.version}.
2499\end{cfuncdesc}
2500
2501\begin{cfuncdesc}{int}{PySys_SetArgv}{int argc, char **argv}
2502% XXX
2503\end{cfuncdesc}
2504
2505% XXX Other PySys thingies (doesn't really belong in this chapter)
2506
2507\section{Thread State and the Global Interpreter Lock}
2508
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002509The Python interpreter is not fully thread safe. In order to support
2510multi-threaded Python programs, there's a global lock that must be
2511held by the current thread before it can safely access Python objects.
2512Without the lock, even the simplest operations could cause problems in
Fred Drake7baf3d41998-02-20 00:45:52 +00002513a multi-threaded program: for example, when two threads simultaneously
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002514increment the reference count of the same object, the reference count
2515could end up being incremented only once instead of twice.
2516
2517Therefore, the rule exists that only the thread that has acquired the
2518global interpreter lock may operate on Python objects or call Python/C
2519API functions. In order to support multi-threaded Python programs,
Fred Drakee058b4f1998-02-16 06:15:35 +00002520the interpreter regularly release and reacquires the lock --- by
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002521default, every ten bytecode instructions (this can be changed with
Fred Drakee058b4f1998-02-16 06:15:35 +00002522\function{sys.setcheckinterval()}). The lock is also released and
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002523reacquired around potentially blocking I/O operations like reading or
2524writing a file, so that other threads can run while the thread that
2525requests the I/O is waiting for the I/O operation to complete.
2526
2527The Python interpreter needs to keep some bookkeeping information
Fred Drakee058b4f1998-02-16 06:15:35 +00002528separate per thread --- for this it uses a data structure called
2529\code{PyThreadState}. This is new in Python 1.5; in earlier versions,
2530such state was stored in global variables, and switching threads could
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002531cause problems. In particular, exception handling is now thread safe,
Fred Drakee058b4f1998-02-16 06:15:35 +00002532when the application uses \function{sys.exc_info()} to access the
2533exception last raised in the current thread.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002534
2535There's one global variable left, however: the pointer to the current
Fred Drakee058b4f1998-02-16 06:15:35 +00002536\code{PyThreadState} structure. While most thread packages have a way
Fred Drake9d20ac31998-02-16 15:27:08 +00002537to store ``per-thread global data,'' Python's internal platform
Fred Drakee058b4f1998-02-16 06:15:35 +00002538independent thread abstraction doesn't support this yet. Therefore,
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002539the current thread state must be manipulated explicitly.
2540
2541This is easy enough in most cases. Most code manipulating the global
2542interpreter lock has the following simple structure:
2543
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002544\begin{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002545Save the thread state in a local variable.
2546Release the interpreter lock.
2547...Do some blocking I/O operation...
2548Reacquire the interpreter lock.
2549Restore the thread state from the local variable.
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002550\end{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002551
2552This is so common that a pair of macros exists to simplify it:
2553
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002554\begin{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002555Py_BEGIN_ALLOW_THREADS
2556...Do some blocking I/O operation...
2557Py_END_ALLOW_THREADS
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002558\end{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002559
Fred Drakee058b4f1998-02-16 06:15:35 +00002560The \code{Py_BEGIN_ALLOW_THREADS} macro opens a new block and declares
2561a hidden local variable; the \code{Py_END_ALLOW_THREADS} macro closes
2562the block. Another advantage of using these two macros is that when
2563Python is compiled without thread support, they are defined empty,
2564thus saving the thread state and lock manipulations.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002565
2566When thread support is enabled, the block above expands to the
2567following code:
2568
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002569\begin{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002570{
2571 PyThreadState *_save;
2572 _save = PyEval_SaveThread();
2573 ...Do some blocking I/O operation...
2574 PyEval_RestoreThread(_save);
2575}
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002576\end{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002577
2578Using even lower level primitives, we can get roughly the same effect
2579as follows:
2580
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002581\begin{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002582{
2583 PyThreadState *_save;
2584 _save = PyThreadState_Swap(NULL);
2585 PyEval_ReleaseLock();
2586 ...Do some blocking I/O operation...
2587 PyEval_AcquireLock();
2588 PyThreadState_Swap(_save);
2589}
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002590\end{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002591
2592There are some subtle differences; in particular,
Fred Drakee058b4f1998-02-16 06:15:35 +00002593\cfunction{PyEval_RestoreThread()} saves and restores the value of the
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002594global variable \code{errno}, since the lock manipulation does not
2595guarantee that \code{errno} is left alone. Also, when thread support
Fred Drakee058b4f1998-02-16 06:15:35 +00002596is disabled, \cfunction{PyEval_SaveThread()} and
2597\cfunction{PyEval_RestoreThread()} don't manipulate the lock; in this
2598case, \cfunction{PyEval_ReleaseLock()} and
2599\cfunction{PyEval_AcquireLock()} are not available. This is done so
2600that dynamically loaded extensions compiled with thread support
2601enabled can be loaded by an interpreter that was compiled with
2602disabled thread support.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002603
2604The global interpreter lock is used to protect the pointer to the
2605current thread state. When releasing the lock and saving the thread
2606state, the current thread state pointer must be retrieved before the
2607lock is released (since another thread could immediately acquire the
2608lock and store its own thread state in the global variable).
2609Reversely, when acquiring the lock and restoring the thread state, the
2610lock must be acquired before storing the thread state pointer.
2611
2612Why am I going on with so much detail about this? Because when
Fred Drakeb0a78731998-01-13 18:51:10 +00002613threads are created from \C{}, they don't have the global interpreter
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002614lock, nor is there a thread state data structure for them. Such
2615threads must bootstrap themselves into existence, by first creating a
2616thread state data structure, then acquiring the lock, and finally
2617storing their thread state pointer, before they can start using the
2618Python/C API. When they are done, they should reset the thread state
2619pointer, release the lock, and finally free their thread state data
2620structure.
2621
2622When creating a thread data structure, you need to provide an
2623interpreter state data structure. The interpreter state data
2624structure hold global data that is shared by all threads in an
2625interpreter, for example the module administration
2626(\code{sys.modules}). Depending on your needs, you can either create
2627a new interpreter state data structure, or share the interpreter state
2628data structure used by the Python main thread (to access the latter,
2629you must obtain the thread state and access its \code{interp} member;
2630this must be done by a thread that is created by Python or by the main
2631thread after Python is initialized).
2632
2633XXX More?
2634
2635\begin{ctypedesc}{PyInterpreterState}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002636This data structure represents the state shared by a number of
2637cooperating threads. Threads belonging to the same interpreter
2638share their module administration and a few other internal items.
2639There are no public members in this structure.
2640
2641Threads belonging to different interpreters initially share nothing,
2642except process state like available memory, open file descriptors and
2643such. The global interpreter lock is also shared by all threads,
2644regardless of to which interpreter they belong.
2645\end{ctypedesc}
2646
2647\begin{ctypedesc}{PyThreadState}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002648This data structure represents the state of a single thread. The only
2649public data member is \code{PyInterpreterState *interp}, which points
2650to this thread's interpreter state.
2651\end{ctypedesc}
2652
2653\begin{cfuncdesc}{void}{PyEval_InitThreads}{}
2654Initialize and acquire the global interpreter lock. It should be
2655called in the main thread before creating a second thread or engaging
Fred Drakee058b4f1998-02-16 06:15:35 +00002656in any other thread operations such as
2657\cfunction{PyEval_ReleaseLock()} or
2658\code{PyEval_ReleaseThread(\var{tstate})}. It is not needed before
2659calling \cfunction{PyEval_SaveThread()} or
2660\cfunction{PyEval_RestoreThread()}.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002661
2662This is a no-op when called for a second time. It is safe to call
Fred Drakee058b4f1998-02-16 06:15:35 +00002663this function before calling \cfunction{Py_Initialize()}.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002664
2665When only the main thread exists, no lock operations are needed. This
2666is a common situation (most Python programs do not use threads), and
2667the lock operations slow the interpreter down a bit. Therefore, the
2668lock is not created initially. This situation is equivalent to having
2669acquired the lock: when there is only a single thread, all object
2670accesses are safe. Therefore, when this function initializes the
Fred Drake4de05a91998-02-16 14:25:26 +00002671lock, it also acquires it. Before the Python
2672\module{thread}\refbimodindex{thread} module creates a new thread,
2673knowing that either it has the lock or the lock hasn't been created
2674yet, it calls \cfunction{PyEval_InitThreads()}. When this call
2675returns, it is guaranteed that the lock has been created and that it
2676has acquired it.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002677
2678It is \strong{not} safe to call this function when it is unknown which
2679thread (if any) currently has the global interpreter lock.
2680
2681This function is not available when thread support is disabled at
2682compile time.
2683\end{cfuncdesc}
2684
Guido van Rossum4a944d71997-08-14 20:35:38 +00002685\begin{cfuncdesc}{void}{PyEval_AcquireLock}{}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002686Acquire the global interpreter lock. The lock must have been created
2687earlier. If this thread already has the lock, a deadlock ensues.
2688This function is not available when thread support is disabled at
2689compile time.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002690\end{cfuncdesc}
2691
2692\begin{cfuncdesc}{void}{PyEval_ReleaseLock}{}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002693Release the global interpreter lock. The lock must have been created
2694earlier. This function is not available when thread support is
Fred Drakee058b4f1998-02-16 06:15:35 +00002695disabled at compile time.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002696\end{cfuncdesc}
2697
2698\begin{cfuncdesc}{void}{PyEval_AcquireThread}{PyThreadState *tstate}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002699Acquire the global interpreter lock and then set the current thread
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002700state to \var{tstate}, which should not be \NULL{}. The lock must
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002701have been created earlier. If this thread already has the lock,
2702deadlock ensues. This function is not available when thread support
Fred Drakee058b4f1998-02-16 06:15:35 +00002703is disabled at compile time.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002704\end{cfuncdesc}
2705
2706\begin{cfuncdesc}{void}{PyEval_ReleaseThread}{PyThreadState *tstate}
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002707Reset the current thread state to \NULL{} and release the global
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002708interpreter lock. The lock must have been created earlier and must be
2709held by the current thread. The \var{tstate} argument, which must not
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002710be \NULL{}, is only used to check that it represents the current
Fred Drakee058b4f1998-02-16 06:15:35 +00002711thread state --- if it isn't, a fatal error is reported. This
2712function is not available when thread support is disabled at compile
2713time.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002714\end{cfuncdesc}
2715
2716\begin{cfuncdesc}{PyThreadState *}{PyEval_SaveThread}{}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002717Release the interpreter lock (if it has been created and thread
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002718support is enabled) and reset the thread state to \NULL{},
2719returning the previous thread state (which is not \NULL{}). If
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002720the lock has been created, the current thread must have acquired it.
2721(This function is available even when thread support is disabled at
2722compile time.)
Guido van Rossum4a944d71997-08-14 20:35:38 +00002723\end{cfuncdesc}
2724
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002725\begin{cfuncdesc}{void}{PyEval_RestoreThread}{PyThreadState *tstate}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002726Acquire the interpreter lock (if it has been created and thread
2727support is enabled) and set the thread state to \var{tstate}, which
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002728must not be \NULL{}. If the lock has been created, the current
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002729thread must not have acquired it, otherwise deadlock ensues. (This
2730function is available even when thread support is disabled at compile
2731time.)
Guido van Rossum4a944d71997-08-14 20:35:38 +00002732\end{cfuncdesc}
2733
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002734% XXX These aren't really C types, but the ctypedesc macro is the simplest!
2735\begin{ctypedesc}{Py_BEGIN_ALLOW_THREADS}
2736This macro expands to
Fred Drakee058b4f1998-02-16 06:15:35 +00002737\samp{\{ PyThreadState *_save; _save = PyEval_SaveThread();}.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002738Note that it contains an opening brace; it must be matched with a
2739following \code{Py_END_ALLOW_THREADS} macro. See above for further
2740discussion of this macro. It is a no-op when thread support is
2741disabled at compile time.
2742\end{ctypedesc}
2743
2744\begin{ctypedesc}{Py_END_ALLOW_THREADS}
2745This macro expands to
Fred Drakee058b4f1998-02-16 06:15:35 +00002746\samp{PyEval_RestoreThread(_save); \}}.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002747Note that it contains a closing brace; it must be matched with an
2748earlier \code{Py_BEGIN_ALLOW_THREADS} macro. See above for further
2749discussion of this macro. It is a no-op when thread support is
2750disabled at compile time.
2751\end{ctypedesc}
2752
2753\begin{ctypedesc}{Py_BEGIN_BLOCK_THREADS}
Fred Drakee058b4f1998-02-16 06:15:35 +00002754This macro expands to \samp{PyEval_RestoreThread(_save);} i.e. it
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002755is equivalent to \code{Py_END_ALLOW_THREADS} without the closing
2756brace. It is a no-op when thread support is disabled at compile
2757time.
2758\end{ctypedesc}
2759
2760\begin{ctypedesc}{Py_BEGIN_UNBLOCK_THREADS}
Fred Drakee058b4f1998-02-16 06:15:35 +00002761This macro expands to \samp{_save = PyEval_SaveThread();} i.e. it is
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002762equivalent to \code{Py_BEGIN_ALLOW_THREADS} without the opening brace
2763and variable declaration. It is a no-op when thread support is
2764disabled at compile time.
2765\end{ctypedesc}
2766
2767All of the following functions are only available when thread support
2768is enabled at compile time, and must be called only when the
Fred Drake9d20ac31998-02-16 15:27:08 +00002769interpreter lock has been created.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002770
2771\begin{cfuncdesc}{PyInterpreterState *}{PyInterpreterState_New}{}
2772Create a new interpreter state object. The interpreter lock must be
2773held.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002774\end{cfuncdesc}
2775
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002776\begin{cfuncdesc}{void}{PyInterpreterState_Clear}{PyInterpreterState *interp}
2777Reset all information in an interpreter state object. The interpreter
2778lock must be held.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002779\end{cfuncdesc}
2780
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002781\begin{cfuncdesc}{void}{PyInterpreterState_Delete}{PyInterpreterState *interp}
2782Destroy an interpreter state object. The interpreter lock need not be
2783held. The interpreter state must have been reset with a previous
Fred Drakee058b4f1998-02-16 06:15:35 +00002784call to \cfunction{PyInterpreterState_Clear()}.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002785\end{cfuncdesc}
2786
2787\begin{cfuncdesc}{PyThreadState *}{PyThreadState_New}{PyInterpreterState *interp}
2788Create a new thread state object belonging to the given interpreter
2789object. The interpreter lock must be held.
2790\end{cfuncdesc}
2791
2792\begin{cfuncdesc}{void}{PyThreadState_Clear}{PyThreadState *tstate}
2793Reset all information in a thread state object. The interpreter lock
2794must be held.
2795\end{cfuncdesc}
2796
2797\begin{cfuncdesc}{void}{PyThreadState_Delete}{PyThreadState *tstate}
2798Destroy a thread state object. The interpreter lock need not be
2799held. The thread state must have been reset with a previous
Fred Drakee058b4f1998-02-16 06:15:35 +00002800call to \cfunction{PyThreadState_Clear()}.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002801\end{cfuncdesc}
2802
2803\begin{cfuncdesc}{PyThreadState *}{PyThreadState_Get}{}
2804Return the current thread state. The interpreter lock must be held.
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002805When the current thread state is \NULL{}, this issues a fatal
Guido van Rossum5b8a5231997-12-30 04:38:44 +00002806error (so that the caller needn't check for \NULL{}).
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002807\end{cfuncdesc}
2808
2809\begin{cfuncdesc}{PyThreadState *}{PyThreadState_Swap}{PyThreadState *tstate}
2810Swap the current thread state with the thread state given by the
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002811argument \var{tstate}, which may be \NULL{}. The interpreter lock
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002812must be held.
2813\end{cfuncdesc}
2814
2815
Fred Drakee058b4f1998-02-16 06:15:35 +00002816\chapter{Defining New Object Types}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002817
Fred Drakee058b4f1998-02-16 06:15:35 +00002818\begin{cfuncdesc}{PyObject *}{_PyObject_New}{PyTypeObject *type}
2819\end{cfuncdesc}
2820
2821\begin{cfuncdesc}{PyObject *}{_PyObject_NewVar}{PyTypeObject *type, int size}
2822\end{cfuncdesc}
2823
2824\begin{cfuncdesc}{TYPE}{_PyObject_NEW}{TYPE, PyTypeObject *}
2825\end{cfuncdesc}
2826
2827\begin{cfuncdesc}{TYPE}{_PyObject_NEW_VAR}{TYPE, PyTypeObject *, int size}
2828\end{cfuncdesc}
2829
Guido van Rossumae110af1997-05-22 20:11:52 +00002830
2831PyObject, PyVarObject
2832
2833PyObject_HEAD, PyObject_HEAD_INIT, PyObject_VAR_HEAD
2834
2835Typedefs:
2836unaryfunc, binaryfunc, ternaryfunc, inquiry, coercion, intargfunc,
2837intintargfunc, intobjargproc, intintobjargproc, objobjargproc,
2838getreadbufferproc, getwritebufferproc, getsegcountproc,
2839destructor, printfunc, getattrfunc, getattrofunc, setattrfunc,
2840setattrofunc, cmpfunc, reprfunc, hashfunc
2841
2842PyNumberMethods
2843
2844PySequenceMethods
2845
2846PyMappingMethods
2847
2848PyBufferProcs
2849
2850PyTypeObject
2851
2852DL_IMPORT
2853
2854PyType_Type
2855
2856Py*_Check
2857
2858Py_None, _Py_NoneStruct
2859
Guido van Rossumae110af1997-05-22 20:11:52 +00002860
Fred Drakee5bf8b21998-02-12 21:22:28 +00002861\chapter{Debugging}
Guido van Rossumae110af1997-05-22 20:11:52 +00002862
Fred Drakee5bf8b21998-02-12 21:22:28 +00002863XXX Explain Py_DEBUG, Py_TRACE_REFS, Py_REF_DEBUG.
Guido van Rossum5b8a5231997-12-30 04:38:44 +00002864
2865
Guido van Rossum9231c8f1997-05-15 21:43:21 +00002866\input{api.ind} % Index -- must be last
2867
2868\end{document}