blob: 95b31587bd72d21180939367c05aa3c491a52414 [file] [log] [blame]
Fred Drake6659c301998-03-03 22:02:19 +00001\documentclass{manual}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00002
Guido van Rossum9faf4c51997-10-07 14:38:54 +00003\title{Python/C API Reference Manual}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00004
5\input{boilerplate}
6
7\makeindex % tell \index to actually write the .idx file
8
9
10\begin{document}
11
Guido van Rossum9231c8f1997-05-15 21:43:21 +000012\maketitle
13
Fred Drake9f86b661998-07-28 21:55:19 +000014\ifhtml
15\chapter*{Front Matter\label{front}}
16\fi
17
Guido van Rossum9231c8f1997-05-15 21:43:21 +000018\input{copyright}
19
20\begin{abstract}
21
22\noindent
Fred Drakee058b4f1998-02-16 06:15:35 +000023This manual documents the API used by \C{} (or \Cpp{}) programmers who
24want to write extension modules or embed Python. It is a companion to
25\emph{Extending and Embedding the Python Interpreter}, which describes
Guido van Rossum9231c8f1997-05-15 21:43:21 +000026the general principles of extension writing but does not document the
27API functions in detail.
28
Guido van Rossum5b8a5231997-12-30 04:38:44 +000029\strong{Warning:} The current version of this document is incomplete.
30I hope that it is nevertheless useful. I will continue to work on it,
31and release new versions from time to time, independent from Python
32source code releases.
33
Guido van Rossum9231c8f1997-05-15 21:43:21 +000034\end{abstract}
35
Fred Drake4d4f9e71998-01-13 22:25:02 +000036\tableofcontents
Guido van Rossum9231c8f1997-05-15 21:43:21 +000037
Guido van Rossum5060b3b1997-08-17 18:02:23 +000038% XXX Consider moving all this back to ext.tex and giving api.tex
39% XXX a *really* short intro only.
Guido van Rossum9231c8f1997-05-15 21:43:21 +000040
41\chapter{Introduction}
Fred Drakef39ed671998-02-26 22:01:23 +000042\label{intro}
Guido van Rossum9231c8f1997-05-15 21:43:21 +000043
Fred Drakeb0a78731998-01-13 18:51:10 +000044The Application Programmer's Interface to Python gives \C{} and \Cpp{}
Guido van Rossum59a61351997-08-14 20:34:33 +000045programmers access to the Python interpreter at a variety of levels.
Fred Drakeb0a78731998-01-13 18:51:10 +000046The API is equally usable from \Cpp{}, but for brevity it is generally
47referred to as the Python/\C{} API. There are two fundamentally
Fred Drakee058b4f1998-02-16 06:15:35 +000048different reasons for using the Python/\C{} API. The first reason is
49to write \emph{extension modules} for specific purposes; these are
50\C{} modules that extend the Python interpreter. This is probably the
51most common use. The second reason is to use Python as a component in
52a larger application; this technique is generally referred to as
53\dfn{embedding} Python in an application.
Guido van Rossum59a61351997-08-14 20:34:33 +000054
Guido van Rossum4a944d71997-08-14 20:35:38 +000055Writing an extension module is a relatively well-understood process,
56where a ``cookbook'' approach works well. There are several tools
57that automate the process to some extent. While people have embedded
58Python in other applications since its early existence, the process of
59embedding Python is less straightforward that writing an extension.
60Python 1.5 introduces a number of new API functions as well as some
61changes to the build process that make embedding much simpler.
Fred Drakec6fa34e1998-04-02 06:47:24 +000062This manual describes the \version\ state of affairs.
Guido van Rossum59a61351997-08-14 20:34:33 +000063% XXX Eventually, take the historical notes out
64
Guido van Rossum4a944d71997-08-14 20:35:38 +000065Many API functions are useful independent of whether you're embedding
66or extending Python; moreover, most applications that embed Python
67will need to provide a custom extension as well, so it's probably a
68good idea to become familiar with writing an extension before
Guido van Rossum59a61351997-08-14 20:34:33 +000069attempting to embed Python in a real application.
70
Guido van Rossum580aa8d1997-11-25 15:34:51 +000071\section{Include Files}
Fred Drakef39ed671998-02-26 22:01:23 +000072\label{includes}
Guido van Rossum580aa8d1997-11-25 15:34:51 +000073
74All function, type and macro definitions needed to use the Python/C
75API are included in your code by the following line:
76
Fred Drakee058b4f1998-02-16 06:15:35 +000077\begin{verbatim}
78#include "Python.h"
79\end{verbatim}
Guido van Rossum580aa8d1997-11-25 15:34:51 +000080
Fred Drakee058b4f1998-02-16 06:15:35 +000081This implies inclusion of the following standard headers:
82\code{<stdio.h>}, \code{<string.h>}, \code{<errno.h>}, and
83\code{<stdlib.h>} (if available).
Guido van Rossum580aa8d1997-11-25 15:34:51 +000084
85All user visible names defined by Python.h (except those defined by
Fred Drakee058b4f1998-02-16 06:15:35 +000086the included standard headers) have one of the prefixes \samp{Py} or
87\samp{_Py}. Names beginning with \samp{_Py} are for internal use
Guido van Rossum580aa8d1997-11-25 15:34:51 +000088only. Structure member names do not have a reserved prefix.
89
Fred Drakee058b4f1998-02-16 06:15:35 +000090\strong{Important:} user code should never define names that begin
91with \samp{Py} or \samp{_Py}. This confuses the reader, and
92jeopardizes the portability of the user code to future Python
93versions, which may define additional names beginning with one of
94these prefixes.
Guido van Rossum580aa8d1997-11-25 15:34:51 +000095
Guido van Rossum59a61351997-08-14 20:34:33 +000096\section{Objects, Types and Reference Counts}
Fred Drakef39ed671998-02-26 22:01:23 +000097\label{objects}
Guido van Rossum59a61351997-08-14 20:34:33 +000098
Guido van Rossum580aa8d1997-11-25 15:34:51 +000099Most Python/C API functions have one or more arguments as well as a
Fred Drakef8830d11998-04-23 14:06:01 +0000100return value of type \ctype{PyObject *}. This type is a pointer
Fred Drakee058b4f1998-02-16 06:15:35 +0000101to an opaque data type representing an arbitrary Python
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000102object. Since all Python object types are treated the same way by the
103Python language in most situations (e.g., assignments, scope rules,
104and argument passing), it is only fitting that they should be
Fred Drakeb0a78731998-01-13 18:51:10 +0000105represented by a single \C{} type. All Python objects live on the heap:
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000106you never declare an automatic or static variable of type
Fred Drakef8830d11998-04-23 14:06:01 +0000107\ctype{PyObject}, only pointer variables of type \ctype{PyObject *} can
Guido van Rossum59a61351997-08-14 20:34:33 +0000108be declared.
109
Fred Drakee058b4f1998-02-16 06:15:35 +0000110All Python objects (even Python integers) have a \dfn{type} and a
111\dfn{reference count}. An object's type determines what kind of object
Guido van Rossum4a944d71997-08-14 20:35:38 +0000112it is (e.g., an integer, a list, or a user-defined function; there are
Fred Drakee058b4f1998-02-16 06:15:35 +0000113many more as explained in the \emph{Python Reference Manual}). For
Guido van Rossum4a944d71997-08-14 20:35:38 +0000114each of the well-known types there is a macro to check whether an
Fred Drakee058b4f1998-02-16 06:15:35 +0000115object is of that type; for instance, \samp{PyList_Check(\var{a})} is
116true iff the object pointed to by \var{a} is a Python list.
Guido van Rossum59a61351997-08-14 20:34:33 +0000117
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000118\subsection{Reference Counts}
Fred Drakef39ed671998-02-26 22:01:23 +0000119\label{refcounts}
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000120
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000121The reference count is important because today's computers have a
Fred Drake003d8da1998-04-13 00:53:42 +0000122finite (and often severely limited) memory size; it counts how many
Guido van Rossum4a944d71997-08-14 20:35:38 +0000123different places there are that have a reference to an object. Such a
Fred Drakeb0a78731998-01-13 18:51:10 +0000124place could be another object, or a global (or static) \C{} variable, or
125a local variable in some \C{} function. When an object's reference count
Guido van Rossum4a944d71997-08-14 20:35:38 +0000126becomes zero, the object is deallocated. If it contains references to
127other objects, their reference count is decremented. Those other
128objects may be deallocated in turn, if this decrement makes their
129reference count become zero, and so on. (There's an obvious problem
130with objects that reference each other here; for now, the solution is
Guido van Rossum59a61351997-08-14 20:34:33 +0000131``don't do that''.)
132
Guido van Rossum4a944d71997-08-14 20:35:38 +0000133Reference counts are always manipulated explicitly. The normal way is
Fred Drakee058b4f1998-02-16 06:15:35 +0000134to use the macro \cfunction{Py_INCREF()} to increment an object's
135reference count by one, and \cfunction{Py_DECREF()} to decrement it by
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000136one. The decref macro is considerably more complex than the incref one,
Guido van Rossum4a944d71997-08-14 20:35:38 +0000137since it must check whether the reference count becomes zero and then
138cause the object's deallocator, which is a function pointer contained
139in the object's type structure. The type-specific deallocator takes
140care of decrementing the reference counts for other objects contained
141in the object, and so on, if this is a compound object type such as a
142list. There's no chance that the reference count can overflow; at
143least as many bits are used to hold the reference count as there are
144distinct memory locations in virtual memory (assuming
145\code{sizeof(long) >= sizeof(char *)}). Thus, the reference count
Guido van Rossum59a61351997-08-14 20:34:33 +0000146increment is a simple operation.
147
Guido van Rossum4a944d71997-08-14 20:35:38 +0000148It is not necessary to increment an object's reference count for every
149local variable that contains a pointer to an object. In theory, the
Fred Drakee058b4f1998-02-16 06:15:35 +0000150object's reference count goes up by one when the variable is made to
Guido van Rossum4a944d71997-08-14 20:35:38 +0000151point to it and it goes down by one when the variable goes out of
152scope. However, these two cancel each other out, so at the end the
153reference count hasn't changed. The only real reason to use the
154reference count is to prevent the object from being deallocated as
155long as our variable is pointing to it. If we know that there is at
156least one other reference to the object that lives at least as long as
157our variable, there is no need to increment the reference count
158temporarily. An important situation where this arises is in objects
Fred Drakeb0a78731998-01-13 18:51:10 +0000159that are passed as arguments to \C{} functions in an extension module
Guido van Rossum4a944d71997-08-14 20:35:38 +0000160that are called from Python; the call mechanism guarantees to hold a
Guido van Rossum59a61351997-08-14 20:34:33 +0000161reference to every argument for the duration of the call.
162
Fred Drakee058b4f1998-02-16 06:15:35 +0000163However, a common pitfall is to extract an object from a list and
164hold on to it for a while without incrementing its reference count.
165Some other operation might conceivably remove the object from the
166list, decrementing its reference count and possible deallocating it.
167The real danger is that innocent-looking operations may invoke
168arbitrary Python code which could do this; there is a code path which
169allows control to flow back to the user from a \cfunction{Py_DECREF()},
170so almost any operation is potentially dangerous.
Guido van Rossum59a61351997-08-14 20:34:33 +0000171
Guido van Rossum4a944d71997-08-14 20:35:38 +0000172A safe approach is to always use the generic operations (functions
Fred Drakee058b4f1998-02-16 06:15:35 +0000173whose name begins with \samp{PyObject_}, \samp{PyNumber_},
174\samp{PySequence_} or \samp{PyMapping_}). These operations always
Guido van Rossum4a944d71997-08-14 20:35:38 +0000175increment the reference count of the object they return. This leaves
Fred Drakee058b4f1998-02-16 06:15:35 +0000176the caller with the responsibility to call \cfunction{Py_DECREF()}
177when they are done with the result; this soon becomes second nature.
Guido van Rossum59a61351997-08-14 20:34:33 +0000178
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000179\subsubsection{Reference Count Details}
Fred Drakef39ed671998-02-26 22:01:23 +0000180\label{refcountDetails}
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000181
182The reference count behavior of functions in the Python/C API is best
183expelained in terms of \emph{ownership of references}. Note that we
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000184talk of owning references, never of owning objects; objects are always
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000185shared! When a function owns a reference, it has to dispose of it
Fred Drakee058b4f1998-02-16 06:15:35 +0000186properly --- either by passing ownership on (usually to its caller) or
187by calling \cfunction{Py_DECREF()} or \cfunction{Py_XDECREF()}. When
188a function passes ownership of a reference on to its caller, the
189caller is said to receive a \emph{new} reference. When no ownership
190is transferred, the caller is said to \emph{borrow} the reference.
191Nothing needs to be done for a borrowed reference.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000192
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000193Conversely, when calling a function passes it a reference to an
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000194object, there are two possibilities: the function \emph{steals} a
195reference to the object, or it does not. Few functions steal
Fred Drakee058b4f1998-02-16 06:15:35 +0000196references; the two notable exceptions are
197\cfunction{PyList_SetItem()} and \cfunction{PyTuple_SetItem()}, which
198steal a reference to the item (but not to the tuple or list into which
Fred Drake003d8da1998-04-13 00:53:42 +0000199the item is put!). These functions were designed to steal a reference
Fred Drakee058b4f1998-02-16 06:15:35 +0000200because of a common idiom for populating a tuple or list with newly
201created objects; for example, the code to create the tuple \code{(1,
2022, "three")} could look like this (forgetting about error handling for
203the moment; a better way to code this is shown below anyway):
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000204
205\begin{verbatim}
206PyObject *t;
Fred Drakec6fa34e1998-04-02 06:47:24 +0000207
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000208t = PyTuple_New(3);
209PyTuple_SetItem(t, 0, PyInt_FromLong(1L));
210PyTuple_SetItem(t, 1, PyInt_FromLong(2L));
211PyTuple_SetItem(t, 2, PyString_FromString("three"));
212\end{verbatim}
213
Fred Drakee058b4f1998-02-16 06:15:35 +0000214Incidentally, \cfunction{PyTuple_SetItem()} is the \emph{only} way to
215set tuple items; \cfunction{PySequence_SetItem()} and
216\cfunction{PyObject_SetItem()} refuse to do this since tuples are an
217immutable data type. You should only use
218\cfunction{PyTuple_SetItem()} for tuples that you are creating
Guido van Rossum5b8a5231997-12-30 04:38:44 +0000219yourself.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000220
221Equivalent code for populating a list can be written using
Fred Drakee058b4f1998-02-16 06:15:35 +0000222\cfunction{PyList_New()} and \cfunction{PyList_SetItem()}. Such code
223can also use \cfunction{PySequence_SetItem()}; this illustrates the
224difference between the two (the extra \cfunction{Py_DECREF()} calls):
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000225
226\begin{verbatim}
227PyObject *l, *x;
Fred Drakec6fa34e1998-04-02 06:47:24 +0000228
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000229l = PyList_New(3);
230x = PyInt_FromLong(1L);
Guido van Rossum5b8a5231997-12-30 04:38:44 +0000231PySequence_SetItem(l, 0, x); Py_DECREF(x);
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000232x = PyInt_FromLong(2L);
Guido van Rossum5b8a5231997-12-30 04:38:44 +0000233PySequence_SetItem(l, 1, x); Py_DECREF(x);
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000234x = PyString_FromString("three");
Guido van Rossum5b8a5231997-12-30 04:38:44 +0000235PySequence_SetItem(l, 2, x); Py_DECREF(x);
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000236\end{verbatim}
237
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000238You might find it strange that the ``recommended'' approach takes more
239code. However, in practice, you will rarely use these ways of
240creating and populating a tuple or list. There's a generic function,
Fred Drakee058b4f1998-02-16 06:15:35 +0000241\cfunction{Py_BuildValue()}, that can create most common objects from
242\C{} values, directed by a \dfn{format string}. For example, the
243above two blocks of code could be replaced by the following (which
244also takes care of the error checking):
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000245
246\begin{verbatim}
247PyObject *t, *l;
Fred Drakec6fa34e1998-04-02 06:47:24 +0000248
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000249t = Py_BuildValue("(iis)", 1, 2, "three");
250l = Py_BuildValue("[iis]", 1, 2, "three");
251\end{verbatim}
252
Fred Drakee058b4f1998-02-16 06:15:35 +0000253It is much more common to use \cfunction{PyObject_SetItem()} and
254friends with items whose references you are only borrowing, like
255arguments that were passed in to the function you are writing. In
256that case, their behaviour regarding reference counts is much saner,
257since you don't have to increment a reference count so you can give a
258reference away (``have it be stolen''). For example, this function
259sets all items of a list (actually, any mutable sequence) to a given
260item:
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000261
262\begin{verbatim}
263int set_all(PyObject *target, PyObject *item)
264{
265 int i, n;
Fred Drakec6fa34e1998-04-02 06:47:24 +0000266
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000267 n = PyObject_Length(target);
268 if (n < 0)
269 return -1;
270 for (i = 0; i < n; i++) {
271 if (PyObject_SetItem(target, i, item) < 0)
272 return -1;
273 }
274 return 0;
275}
276\end{verbatim}
277
278The situation is slightly different for function return values.
279While passing a reference to most functions does not change your
280ownership responsibilities for that reference, many functions that
281return a referece to an object give you ownership of the reference.
282The reason is simple: in many cases, the returned object is created
283on the fly, and the reference you get is the only reference to the
Fred Drakee058b4f1998-02-16 06:15:35 +0000284object. Therefore, the generic functions that return object
285references, like \cfunction{PyObject_GetItem()} and
286\cfunction{PySequence_GetItem()}, always return a new reference (i.e.,
287the caller becomes the owner of the reference).
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000288
289It is important to realize that whether you own a reference returned
Fred Drakee058b4f1998-02-16 06:15:35 +0000290by a function depends on which function you call only --- \emph{the
291plumage} (i.e., the type of the type of the object passed as an
292argument to the function) \emph{doesn't enter into it!} Thus, if you
293extract an item from a list using \cfunction{PyList_GetItem()}, you
294don't own the reference --- but if you obtain the same item from the
295same list using \cfunction{PySequence_GetItem()} (which happens to
296take exactly the same arguments), you do own a reference to the
297returned object.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000298
Fred Drakee058b4f1998-02-16 06:15:35 +0000299Here is an example of how you could write a function that computes the
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000300sum of the items in a list of integers; once using
Fred Drakee058b4f1998-02-16 06:15:35 +0000301\cfunction{PyList_GetItem()}, once using
302\cfunction{PySequence_GetItem()}.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000303
304\begin{verbatim}
305long sum_list(PyObject *list)
306{
307 int i, n;
308 long total = 0;
309 PyObject *item;
Fred Drakec6fa34e1998-04-02 06:47:24 +0000310
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000311 n = PyList_Size(list);
312 if (n < 0)
313 return -1; /* Not a list */
314 for (i = 0; i < n; i++) {
315 item = PyList_GetItem(list, i); /* Can't fail */
316 if (!PyInt_Check(item)) continue; /* Skip non-integers */
317 total += PyInt_AsLong(item);
318 }
319 return total;
320}
321\end{verbatim}
322
323\begin{verbatim}
324long sum_sequence(PyObject *sequence)
325{
326 int i, n;
327 long total = 0;
328 PyObject *item;
329 n = PyObject_Size(list);
330 if (n < 0)
331 return -1; /* Has no length */
332 for (i = 0; i < n; i++) {
333 item = PySequence_GetItem(list, i);
334 if (item == NULL)
335 return -1; /* Not a sequence, or other failure */
336 if (PyInt_Check(item))
337 total += PyInt_AsLong(item);
Guido van Rossum5b8a5231997-12-30 04:38:44 +0000338 Py_DECREF(item); /* Discard reference ownership */
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000339 }
340 return total;
341}
342\end{verbatim}
343
344\subsection{Types}
Fred Drakef39ed671998-02-26 22:01:23 +0000345\label{types}
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000346
347There are few other data types that play a significant role in
Fred Drakef8830d11998-04-23 14:06:01 +0000348the Python/C API; most are simple \C{} types such as \ctype{int},
349\ctype{long}, \ctype{double} and \ctype{char *}. A few structure types
Guido van Rossum4a944d71997-08-14 20:35:38 +0000350are used to describe static tables used to list the functions exported
351by a module or the data attributes of a new object type. These will
Guido van Rossum59a61351997-08-14 20:34:33 +0000352be discussed together with the functions that use them.
353
354\section{Exceptions}
Fred Drakef39ed671998-02-26 22:01:23 +0000355\label{exceptions}
Guido van Rossum59a61351997-08-14 20:34:33 +0000356
Guido van Rossum4a944d71997-08-14 20:35:38 +0000357The Python programmer only needs to deal with exceptions if specific
358error handling is required; unhandled exceptions are automatically
359propagated to the caller, then to the caller's caller, and so on, till
360they reach the top-level interpreter, where they are reported to the
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000361user accompanied by a stack traceback.
Guido van Rossum59a61351997-08-14 20:34:33 +0000362
Fred Drakeb0a78731998-01-13 18:51:10 +0000363For \C{} programmers, however, error checking always has to be explicit.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000364All functions in the Python/C API can raise exceptions, unless an
365explicit claim is made otherwise in a function's documentation. In
366general, when a function encounters an error, it sets an exception,
367discards any object references that it owns, and returns an
Fred Drakee058b4f1998-02-16 06:15:35 +0000368error indicator --- usually \NULL{} or \code{-1}. A few functions
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000369return a Boolean true/false result, with false indicating an error.
370Very few functions return no explicit error indicator or have an
371ambiguous return value, and require explicit testing for errors with
Fred Drakee058b4f1998-02-16 06:15:35 +0000372\cfunction{PyErr_Occurred()}.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000373
374Exception state is maintained in per-thread storage (this is
375equivalent to using global storage in an unthreaded application). A
Fred Drakec6fa34e1998-04-02 06:47:24 +0000376thread can be in one of two states: an exception has occurred, or not.
Fred Drakee058b4f1998-02-16 06:15:35 +0000377The function \cfunction{PyErr_Occurred()} can be used to check for
378this: it returns a borrowed reference to the exception type object
379when an exception has occurred, and \NULL{} otherwise. There are a
380number of functions to set the exception state:
381\cfunction{PyErr_SetString()} is the most common (though not the most
382general) function to set the exception state, and
383\cfunction{PyErr_Clear()} clears the exception state.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000384
385The full exception state consists of three objects (all of which can
Fred Drakee058b4f1998-02-16 06:15:35 +0000386be \NULL{}): the exception type, the corresponding exception
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000387value, and the traceback. These have the same meanings as the Python
388object \code{sys.exc_type}, \code{sys.exc_value},
389\code{sys.exc_traceback}; however, they are not the same: the Python
390objects represent the last exception being handled by a Python
Fred Drakee058b4f1998-02-16 06:15:35 +0000391\keyword{try} \ldots\ \keyword{except} statement, while the \C{} level
392exception state only exists while an exception is being passed on
393between \C{} functions until it reaches the Python interpreter, which
394takes care of transferring it to \code{sys.exc_type} and friends.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000395
Fred Drakec6fa34e1998-04-02 06:47:24 +0000396Note that starting with Python 1.5, the preferred, thread-safe way to
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000397access the exception state from Python code is to call the function
Fred Drakee058b4f1998-02-16 06:15:35 +0000398\function{sys.exc_info()}, which returns the per-thread exception state
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000399for Python code. Also, the semantics of both ways to access the
400exception state have changed so that a function which catches an
401exception will save and restore its thread's exception state so as to
402preserve the exception state of its caller. This prevents common bugs
403in exception handling code caused by an innocent-looking function
404overwriting the exception being handled; it also reduces the often
405unwanted lifetime extension for objects that are referenced by the
Fred Drakec6fa34e1998-04-02 06:47:24 +0000406stack frames in the traceback.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000407
408As a general principle, a function that calls another function to
409perform some task should check whether the called function raised an
410exception, and if so, pass the exception state on to its caller. It
Fred Drakee058b4f1998-02-16 06:15:35 +0000411should discard any object references that it owns, and returns an
412error indicator, but it should \emph{not} set another exception ---
413that would overwrite the exception that was just raised, and lose
414important information about the exact cause of the error.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000415
416A simple example of detecting exceptions and passing them on is shown
Fred Drakee058b4f1998-02-16 06:15:35 +0000417in the \cfunction{sum_sequence()} example above. It so happens that
418that example doesn't need to clean up any owned references when it
419detects an error. The following example function shows some error
420cleanup. First, to remind you why you like Python, we show the
421equivalent Python code:
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000422
423\begin{verbatim}
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000424def incr_item(dict, key):
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000425 try:
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000426 item = dict[key]
427 except KeyError:
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000428 item = 0
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000429 return item + 1
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000430\end{verbatim}
431
Fred Drakeb0a78731998-01-13 18:51:10 +0000432Here is the corresponding \C{} code, in all its glory:
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000433
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000434\begin{verbatim}
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000435int incr_item(PyObject *dict, PyObject *key)
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000436{
437 /* Objects all initialized to NULL for Py_XDECREF */
438 PyObject *item = NULL, *const_one = NULL, *incremented_item = NULL;
Guido van Rossum5b8a5231997-12-30 04:38:44 +0000439 int rv = -1; /* Return value initialized to -1 (failure) */
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000440
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000441 item = PyObject_GetItem(dict, key);
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000442 if (item == NULL) {
Fred Drakec6fa34e1998-04-02 06:47:24 +0000443 /* Handle KeyError only: */
444 if (!PyErr_ExceptionMatches(PyExc_KeyError)) goto error;
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000445
446 /* Clear the error and use zero: */
447 PyErr_Clear();
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000448 item = PyInt_FromLong(0L);
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000449 if (item == NULL) goto error;
450 }
451
452 const_one = PyInt_FromLong(1L);
453 if (const_one == NULL) goto error;
454
455 incremented_item = PyNumber_Add(item, const_one);
456 if (incremented_item == NULL) goto error;
457
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000458 if (PyObject_SetItem(dict, key, incremented_item) < 0) goto error;
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000459 rv = 0; /* Success */
460 /* Continue with cleanup code */
461
462 error:
463 /* Cleanup code, shared by success and failure path */
464
465 /* Use Py_XDECREF() to ignore NULL references */
466 Py_XDECREF(item);
467 Py_XDECREF(const_one);
468 Py_XDECREF(incremented_item);
469
470 return rv; /* -1 for error, 0 for success */
471}
472\end{verbatim}
473
Fred Drakef8830d11998-04-23 14:06:01 +0000474This example represents an endorsed use of the \keyword{goto} statement
Fred Drakee058b4f1998-02-16 06:15:35 +0000475in \C{}! It illustrates the use of
476\cfunction{PyErr_ExceptionMatches()} and \cfunction{PyErr_Clear()} to
477handle specific exceptions, and the use of \cfunction{Py_XDECREF()} to
478dispose of owned references that may be \NULL{} (note the \samp{X} in
479the name; \cfunction{Py_DECREF()} would crash when confronted with a
480\NULL{} reference). It is important that the variables used to hold
481owned references are initialized to \NULL{} for this to work;
482likewise, the proposed return value is initialized to \code{-1}
483(failure) and only set to success after the final call made is
484successful.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000485
Guido van Rossum59a61351997-08-14 20:34:33 +0000486
487\section{Embedding Python}
Fred Drakef39ed671998-02-26 22:01:23 +0000488\label{embedding}
Guido van Rossum59a61351997-08-14 20:34:33 +0000489
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000490The one important task that only embedders (as opposed to extension
491writers) of the Python interpreter have to worry about is the
492initialization, and possibly the finalization, of the Python
493interpreter. Most functionality of the interpreter can only be used
494after the interpreter has been initialized.
Guido van Rossum59a61351997-08-14 20:34:33 +0000495
Fred Drakee058b4f1998-02-16 06:15:35 +0000496The basic initialization function is \cfunction{Py_Initialize()}.
497This initializes the table of loaded modules, and creates the
Fred Drake4de05a91998-02-16 14:25:26 +0000498fundamental modules \module{__builtin__}\refbimodindex{__builtin__},
499\module{__main__}\refbimodindex{__main__} and
500\module{sys}\refbimodindex{sys}. It also initializes the module
Fred Drakec6fa34e1998-04-02 06:47:24 +0000501search path (\code{sys.path}).%
502\indexiii{module}{search}{path}
Guido van Rossum59a61351997-08-14 20:34:33 +0000503
Fred Drakee058b4f1998-02-16 06:15:35 +0000504\cfunction{Py_Initialize()} does not set the ``script argument list''
Guido van Rossum4a944d71997-08-14 20:35:38 +0000505(\code{sys.argv}). If this variable is needed by Python code that
506will be executed later, it must be set explicitly with a call to
507\code{PySys_SetArgv(\var{argc}, \var{argv})} subsequent to the call
Fred Drakee058b4f1998-02-16 06:15:35 +0000508to \cfunction{Py_Initialize()}.
Guido van Rossum59a61351997-08-14 20:34:33 +0000509
Fred Drakeb0a78731998-01-13 18:51:10 +0000510On most systems (in particular, on \UNIX{} and Windows, although the
Fred Drakee058b4f1998-02-16 06:15:35 +0000511details are slightly different), \cfunction{Py_Initialize()}
512calculates the module search path based upon its best guess for the
513location of the standard Python interpreter executable, assuming that
514the Python library is found in a fixed location relative to the Python
Guido van Rossum42cefd01997-10-05 15:27:29 +0000515interpreter executable. In particular, it looks for a directory named
Fred Drake2de75ec1998-04-09 14:12:11 +0000516\file{lib/python1.5} (replacing \file{1.5} with the current
Guido van Rossum42cefd01997-10-05 15:27:29 +0000517interpreter version) relative to the parent directory where the
Fred Drakee058b4f1998-02-16 06:15:35 +0000518executable named \file{python} is found on the shell command search
Fred Drakec6fa34e1998-04-02 06:47:24 +0000519path (the environment variable \envvar{PATH}).
Guido van Rossum42cefd01997-10-05 15:27:29 +0000520
521For instance, if the Python executable is found in
Fred Drakee058b4f1998-02-16 06:15:35 +0000522\file{/usr/local/bin/python}, it will assume that the libraries are in
Fred Drake2de75ec1998-04-09 14:12:11 +0000523\file{/usr/local/lib/python1.5}. (In fact, this particular path
Fred Drakee058b4f1998-02-16 06:15:35 +0000524is also the ``fallback'' location, used when no executable file named
Fred Drakec6fa34e1998-04-02 06:47:24 +0000525\file{python} is found along \envvar{PATH}.) The user can override
526this behavior by setting the environment variable \envvar{PYTHONHOME},
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000527or insert additional directories in front of the standard path by
Fred Drakec6fa34e1998-04-02 06:47:24 +0000528setting \envvar{PYTHONPATH}.
Guido van Rossum59a61351997-08-14 20:34:33 +0000529
Guido van Rossum4a944d71997-08-14 20:35:38 +0000530The embedding application can steer the search by calling
531\code{Py_SetProgramName(\var{file})} \emph{before} calling
Fred Drakec6fa34e1998-04-02 06:47:24 +0000532\cfunction{Py_Initialize()}. Note that \envvar{PYTHONHOME} still
533overrides this and \envvar{PYTHONPATH} is still inserted in front of
Fred Drakee058b4f1998-02-16 06:15:35 +0000534the standard path. An application that requires total control has to
535provide its own implementation of \cfunction{Py_GetPath()},
536\cfunction{Py_GetPrefix()}, \cfunction{Py_GetExecPrefix()},
537\cfunction{Py_GetProgramFullPath()} (all defined in
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000538\file{Modules/getpath.c}).
Guido van Rossum59a61351997-08-14 20:34:33 +0000539
Guido van Rossum4a944d71997-08-14 20:35:38 +0000540Sometimes, it is desirable to ``uninitialize'' Python. For instance,
541the application may want to start over (make another call to
Fred Drakee058b4f1998-02-16 06:15:35 +0000542\cfunction{Py_Initialize()}) or the application is simply done with its
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000543use of Python and wants to free all memory allocated by Python. This
Fred Drakee058b4f1998-02-16 06:15:35 +0000544can be accomplished by calling \cfunction{Py_Finalize()}. The function
545\cfunction{Py_IsInitialized()} returns true iff Python is currently in the
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000546initialized state. More information about these functions is given in
547a later chapter.
Guido van Rossum59a61351997-08-14 20:34:33 +0000548
Guido van Rossum4a944d71997-08-14 20:35:38 +0000549
Fred Drakee5bf8b21998-02-12 21:22:28 +0000550\chapter{The Very High Level Layer}
Fred Drakef39ed671998-02-26 22:01:23 +0000551\label{veryhigh}
Guido van Rossum4a944d71997-08-14 20:35:38 +0000552
Fred Drakee5bf8b21998-02-12 21:22:28 +0000553The functions in this chapter will let you execute Python source code
554given in a file or a buffer, but they will not let you interact in a
555more detailed way with the interpreter.
Guido van Rossum4a944d71997-08-14 20:35:38 +0000556
Fred Drakec6fa34e1998-04-02 06:47:24 +0000557\begin{cfuncdesc}{int}{PyRun_AnyFile}{FILE *fp, char *filename}
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000558\end{cfuncdesc}
559
Fred Drakec6fa34e1998-04-02 06:47:24 +0000560\begin{cfuncdesc}{int}{PyRun_SimpleString}{char *command}
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000561\end{cfuncdesc}
562
Fred Drakec6fa34e1998-04-02 06:47:24 +0000563\begin{cfuncdesc}{int}{PyRun_SimpleFile}{FILE *fp, char *filename}
Fred Drakee5bf8b21998-02-12 21:22:28 +0000564\end{cfuncdesc}
565
Fred Drakec6fa34e1998-04-02 06:47:24 +0000566\begin{cfuncdesc}{int}{PyRun_InteractiveOne}{FILE *fp, char *filename}
Fred Drakee5bf8b21998-02-12 21:22:28 +0000567\end{cfuncdesc}
568
Fred Drakec6fa34e1998-04-02 06:47:24 +0000569\begin{cfuncdesc}{int}{PyRun_InteractiveLoop}{FILE *fp, char *filename}
Fred Drakee5bf8b21998-02-12 21:22:28 +0000570\end{cfuncdesc}
571
Fred Drakec6fa34e1998-04-02 06:47:24 +0000572\begin{cfuncdesc}{struct _node*}{PyParser_SimpleParseString}{char *str,
573 int start}
Fred Drakee5bf8b21998-02-12 21:22:28 +0000574\end{cfuncdesc}
575
Fred Drakec6fa34e1998-04-02 06:47:24 +0000576\begin{cfuncdesc}{struct _node*}{PyParser_SimpleParseFile}{FILE *fp,
577 char *filename, int start}
Fred Drakee5bf8b21998-02-12 21:22:28 +0000578\end{cfuncdesc}
579
Fred Drakec6fa34e1998-04-02 06:47:24 +0000580\begin{cfuncdesc}{PyObject*}{PyRun_String}{char *str, int start,
581 PyObject *globals,
582 PyObject *locals}
Fred Drakee5bf8b21998-02-12 21:22:28 +0000583\end{cfuncdesc}
584
Fred Drakec6fa34e1998-04-02 06:47:24 +0000585\begin{cfuncdesc}{PyObject*}{PyRun_File}{FILE *fp, char *filename,
586 int start, PyObject *globals,
587 PyObject *locals}
Fred Drakee5bf8b21998-02-12 21:22:28 +0000588\end{cfuncdesc}
589
Fred Drakec6fa34e1998-04-02 06:47:24 +0000590\begin{cfuncdesc}{PyObject*}{Py_CompileString}{char *str, char *filename,
591 int start}
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000592\end{cfuncdesc}
593
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000594
595\chapter{Reference Counting}
Fred Drakef39ed671998-02-26 22:01:23 +0000596\label{countingRefs}
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000597
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000598The macros in this section are used for managing reference counts
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000599of Python objects.
600
601\begin{cfuncdesc}{void}{Py_INCREF}{PyObject *o}
Fred Drakec6fa34e1998-04-02 06:47:24 +0000602Increment the reference count for object \var{o}. The object must
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000603not be \NULL{}; if you aren't sure that it isn't \NULL{}, use
Fred Drakee058b4f1998-02-16 06:15:35 +0000604\cfunction{Py_XINCREF()}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000605\end{cfuncdesc}
606
607\begin{cfuncdesc}{void}{Py_XINCREF}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +0000608Increment the reference count for object \var{o}. The object may be
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000609\NULL{}, in which case the macro has no effect.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000610\end{cfuncdesc}
611
612\begin{cfuncdesc}{void}{Py_DECREF}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +0000613Decrement the reference count for object \var{o}. The object must
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000614not be \NULL{}; if you aren't sure that it isn't \NULL{}, use
Fred Drakee058b4f1998-02-16 06:15:35 +0000615\cfunction{Py_XDECREF()}. If the reference count reaches zero, the
616object's type's deallocation function (which must not be \NULL{}) is
617invoked.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000618
619\strong{Warning:} The deallocation function can cause arbitrary Python
Fred Drakee058b4f1998-02-16 06:15:35 +0000620code to be invoked (e.g. when a class instance with a \method{__del__()}
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000621method is deallocated). While exceptions in such code are not
622propagated, the executed code has free access to all Python global
623variables. This means that any object that is reachable from a global
Fred Drakee058b4f1998-02-16 06:15:35 +0000624variable should be in a consistent state before \cfunction{Py_DECREF()} is
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000625invoked. For example, code to delete an object from a list should
626copy a reference to the deleted object in a temporary variable, update
Fred Drakee058b4f1998-02-16 06:15:35 +0000627the list data structure, and then call \cfunction{Py_DECREF()} for the
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000628temporary variable.
629\end{cfuncdesc}
630
631\begin{cfuncdesc}{void}{Py_XDECREF}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +0000632Decrement the reference count for object \var{o}. The object may be
633\NULL{}, in which case the macro has no effect; otherwise the effect
634is the same as for \cfunction{Py_DECREF()}, and the same warning
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000635applies.
636\end{cfuncdesc}
637
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000638The following functions or macros are only for internal use:
Fred Drakee058b4f1998-02-16 06:15:35 +0000639\cfunction{_Py_Dealloc()}, \cfunction{_Py_ForgetReference()},
640\cfunction{_Py_NewReference()}, as well as the global variable
Fred Drakef8830d11998-04-23 14:06:01 +0000641\cdata{_Py_RefTotal}.
Guido van Rossumae110af1997-05-22 20:11:52 +0000642
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000643XXX Should mention Py_Malloc(), Py_Realloc(), Py_Free(),
644PyMem_Malloc(), PyMem_Realloc(), PyMem_Free(), PyMem_NEW(),
645PyMem_RESIZE(), PyMem_DEL(), PyMem_XDEL().
646
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000647
648\chapter{Exception Handling}
Fred Drakef39ed671998-02-26 22:01:23 +0000649\label{exceptionHandling}
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000650
651The functions in this chapter will let you handle and raise Python
Guido van Rossumae110af1997-05-22 20:11:52 +0000652exceptions. It is important to understand some of the basics of
Fred Drakeb0a78731998-01-13 18:51:10 +0000653Python exception handling. It works somewhat like the \UNIX{}
Fred Drakef8830d11998-04-23 14:06:01 +0000654\cdata{errno} variable: there is a global indicator (per thread) of the
Guido van Rossumae110af1997-05-22 20:11:52 +0000655last error that occurred. Most functions don't clear this on success,
656but will set it to indicate the cause of the error on failure. Most
657functions also return an error indicator, usually \NULL{} if they are
Fred Drakee058b4f1998-02-16 06:15:35 +0000658supposed to return a pointer, or \code{-1} if they return an integer
Fred Drakef8830d11998-04-23 14:06:01 +0000659(exception: the \cfunction{PyArg_Parse*()} functions return \code{1} for
Fred Drakee058b4f1998-02-16 06:15:35 +0000660success and \code{0} for failure). When a function must fail because
661some function it called failed, it generally doesn't set the error
662indicator; the function it called already set it.
Guido van Rossumae110af1997-05-22 20:11:52 +0000663
664The error indicator consists of three Python objects corresponding to
665the Python variables \code{sys.exc_type}, \code{sys.exc_value} and
666\code{sys.exc_traceback}. API functions exist to interact with the
667error indicator in various ways. There is a separate error indicator
668for each thread.
669
670% XXX Order of these should be more thoughtful.
671% Either alphabetical or some kind of structure.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000672
673\begin{cfuncdesc}{void}{PyErr_Print}{}
Guido van Rossumae110af1997-05-22 20:11:52 +0000674Print a standard traceback to \code{sys.stderr} and clear the error
675indicator. Call this function only when the error indicator is set.
676(Otherwise it will cause a fatal error!)
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000677\end{cfuncdesc}
678
Fred Drakec6fa34e1998-04-02 06:47:24 +0000679\begin{cfuncdesc}{PyObject*}{PyErr_Occurred}{}
Guido van Rossumae110af1997-05-22 20:11:52 +0000680Test whether the error indicator is set. If set, return the exception
Fred Drakee058b4f1998-02-16 06:15:35 +0000681\emph{type} (the first argument to the last call to one of the
Fred Drakef8830d11998-04-23 14:06:01 +0000682\cfunction{PyErr_Set*()} functions or to \cfunction{PyErr_Restore()}). If
Fred Drakee058b4f1998-02-16 06:15:35 +0000683not set, return \NULL{}. You do not own a reference to the return
684value, so you do not need to \cfunction{Py_DECREF()} it.
685\strong{Note:} do not compare the return value to a specific
686exception; use \cfunction{PyErr_ExceptionMatches()} instead, shown
687below.
Guido van Rossum42cefd01997-10-05 15:27:29 +0000688\end{cfuncdesc}
689
690\begin{cfuncdesc}{int}{PyErr_ExceptionMatches}{PyObject *exc}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000691Equivalent to
Fred Drakee058b4f1998-02-16 06:15:35 +0000692\samp{PyErr_GivenExceptionMatches(PyErr_Occurred(), \var{exc})}.
Guido van Rossum42cefd01997-10-05 15:27:29 +0000693This should only be called when an exception is actually set.
694\end{cfuncdesc}
695
696\begin{cfuncdesc}{int}{PyErr_GivenExceptionMatches}{PyObject *given, PyObject *exc}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000697Return true if the \var{given} exception matches the exception in
698\var{exc}. If \var{exc} is a class object, this also returns true
699when \var{given} is a subclass. If \var{exc} is a tuple, all
700exceptions in the tuple (and recursively in subtuples) are searched
701for a match. This should only be called when an exception is actually
702set.
703\end{cfuncdesc}
704
705\begin{cfuncdesc}{void}{PyErr_NormalizeException}{PyObject**exc, PyObject**val, PyObject**tb}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000706Under certain circumstances, the values returned by
Fred Drakee058b4f1998-02-16 06:15:35 +0000707\cfunction{PyErr_Fetch()} below can be ``unnormalized'', meaning that
708\code{*\var{exc}} is a class object but \code{*\var{val}} is not an
709instance of the same class. This function can be used to instantiate
710the class in that case. If the values are already normalized, nothing
711happens.
Guido van Rossumae110af1997-05-22 20:11:52 +0000712\end{cfuncdesc}
713
714\begin{cfuncdesc}{void}{PyErr_Clear}{}
715Clear the error indicator. If the error indicator is not set, there
716is no effect.
717\end{cfuncdesc}
718
719\begin{cfuncdesc}{void}{PyErr_Fetch}{PyObject **ptype, PyObject **pvalue, PyObject **ptraceback}
720Retrieve the error indicator into three variables whose addresses are
721passed. If the error indicator is not set, set all three variables to
722\NULL{}. If it is set, it will be cleared and you own a reference to
723each object retrieved. The value and traceback object may be \NULL{}
724even when the type object is not. \strong{Note:} this function is
725normally only used by code that needs to handle exceptions or by code
726that needs to save and restore the error indicator temporarily.
727\end{cfuncdesc}
728
729\begin{cfuncdesc}{void}{PyErr_Restore}{PyObject *type, PyObject *value, PyObject *traceback}
730Set the error indicator from the three objects. If the error
731indicator is already set, it is cleared first. If the objects are
732\NULL{}, the error indicator is cleared. Do not pass a \NULL{} type
733and non-\NULL{} value or traceback. The exception type should be a
734string or class; if it is a class, the value should be an instance of
735that class. Do not pass an invalid exception type or value.
736(Violating these rules will cause subtle problems later.) This call
737takes away a reference to each object, i.e. you must own a reference
738to each object before the call and after the call you no longer own
739these references. (If you don't understand this, don't use this
740function. I warned you.) \strong{Note:} this function is normally
741only used by code that needs to save and restore the error indicator
742temporarily.
743\end{cfuncdesc}
744
745\begin{cfuncdesc}{void}{PyErr_SetString}{PyObject *type, char *message}
746This is the most common way to set the error indicator. The first
747argument specifies the exception type; it is normally one of the
Fred Drakef8830d11998-04-23 14:06:01 +0000748standard exceptions, e.g. \cdata{PyExc_RuntimeError}. You need not
Guido van Rossumae110af1997-05-22 20:11:52 +0000749increment its reference count. The second argument is an error
750message; it is converted to a string object.
751\end{cfuncdesc}
752
753\begin{cfuncdesc}{void}{PyErr_SetObject}{PyObject *type, PyObject *value}
Fred Drakee058b4f1998-02-16 06:15:35 +0000754This function is similar to \cfunction{PyErr_SetString()} but lets you
Guido van Rossumae110af1997-05-22 20:11:52 +0000755specify an arbitrary Python object for the ``value'' of the exception.
756You need not increment its reference count.
757\end{cfuncdesc}
758
759\begin{cfuncdesc}{void}{PyErr_SetNone}{PyObject *type}
Fred Drakee058b4f1998-02-16 06:15:35 +0000760This is a shorthand for \samp{PyErr_SetObject(\var{type}, Py_None)}.
Guido van Rossumae110af1997-05-22 20:11:52 +0000761\end{cfuncdesc}
762
763\begin{cfuncdesc}{int}{PyErr_BadArgument}{}
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 a built-in operation
766was invoked with an illegal argument. It is mostly for internal use.
767\end{cfuncdesc}
768
Fred Drakec6fa34e1998-04-02 06:47:24 +0000769\begin{cfuncdesc}{PyObject*}{PyErr_NoMemory}{}
Fred Drakee058b4f1998-02-16 06:15:35 +0000770This is a shorthand for \samp{PyErr_SetNone(PyExc_MemoryError)}; it
Guido van Rossumae110af1997-05-22 20:11:52 +0000771returns \NULL{} so an object allocation function can write
Fred Drakee058b4f1998-02-16 06:15:35 +0000772\samp{return PyErr_NoMemory();} when it runs out of memory.
Guido van Rossumae110af1997-05-22 20:11:52 +0000773\end{cfuncdesc}
774
Fred Drakec6fa34e1998-04-02 06:47:24 +0000775\begin{cfuncdesc}{PyObject*}{PyErr_SetFromErrno}{PyObject *type}
Fred Drakeb0a78731998-01-13 18:51:10 +0000776This is a convenience function to raise an exception when a \C{} library
Fred Drakef8830d11998-04-23 14:06:01 +0000777function has returned an error and set the \C{} variable \cdata{errno}.
Guido van Rossumae110af1997-05-22 20:11:52 +0000778It constructs a tuple object whose first item is the integer
Fred Drakef8830d11998-04-23 14:06:01 +0000779\cdata{errno} value and whose second item is the corresponding error
Fred Drakee058b4f1998-02-16 06:15:35 +0000780message (gotten from \cfunction{strerror()}), and then calls
781\samp{PyErr_SetObject(\var{type}, \var{object})}. On \UNIX{}, when
Fred Drakef8830d11998-04-23 14:06:01 +0000782the \cdata{errno} value is \constant{EINTR}, indicating an interrupted
Fred Drakee058b4f1998-02-16 06:15:35 +0000783system call, this calls \cfunction{PyErr_CheckSignals()}, and if that set
Guido van Rossumae110af1997-05-22 20:11:52 +0000784the error indicator, leaves it set to that. The function always
785returns \NULL{}, so a wrapper function around a system call can write
Fred Drakee058b4f1998-02-16 06:15:35 +0000786\samp{return PyErr_SetFromErrno();} when the system call returns an
787error.
Guido van Rossumae110af1997-05-22 20:11:52 +0000788\end{cfuncdesc}
789
790\begin{cfuncdesc}{void}{PyErr_BadInternalCall}{}
Fred Drakee058b4f1998-02-16 06:15:35 +0000791This is a shorthand for \samp{PyErr_SetString(PyExc_TypeError,
Guido van Rossumae110af1997-05-22 20:11:52 +0000792\var{message})}, where \var{message} indicates that an internal
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000793operation (e.g. a Python/C API function) was invoked with an illegal
Guido van Rossumae110af1997-05-22 20:11:52 +0000794argument. It is mostly for internal use.
795\end{cfuncdesc}
796
797\begin{cfuncdesc}{int}{PyErr_CheckSignals}{}
798This function interacts with Python's signal handling. It checks
799whether a signal has been sent to the processes and if so, invokes the
Fred Drake4de05a91998-02-16 14:25:26 +0000800corresponding signal handler. If the
801\module{signal}\refbimodindex{signal} module is supported, this can
802invoke a signal handler written in Python. In all cases, the default
803effect for \constant{SIGINT} is to raise the
804\exception{KeyboadInterrupt} exception. If an exception is raised the
Fred Drakee058b4f1998-02-16 06:15:35 +0000805error indicator is set and the function returns \code{1}; otherwise
806the function returns \code{0}. The error indicator may or may not be
807cleared if it was previously set.
Guido van Rossumae110af1997-05-22 20:11:52 +0000808\end{cfuncdesc}
809
810\begin{cfuncdesc}{void}{PyErr_SetInterrupt}{}
811This function is obsolete (XXX or platform dependent?). It simulates
Fred Drakee058b4f1998-02-16 06:15:35 +0000812the effect of a \constant{SIGINT} signal arriving --- the next time
813\cfunction{PyErr_CheckSignals()} is called,
814\exception{KeyboadInterrupt} will be raised.
Guido van Rossumae110af1997-05-22 20:11:52 +0000815\end{cfuncdesc}
816
Fred Drakec6fa34e1998-04-02 06:47:24 +0000817\begin{cfuncdesc}{PyObject*}{PyErr_NewException}{char *name,
818 PyObject *base,
819 PyObject *dict}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000820This utility function creates and returns a new exception object. The
Fred Drakeb0a78731998-01-13 18:51:10 +0000821\var{name} argument must be the name of the new exception, a \C{} string
Guido van Rossum42cefd01997-10-05 15:27:29 +0000822of the form \code{module.class}. The \var{base} and \var{dict}
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000823arguments are normally \NULL{}. Normally, this creates a class
Guido van Rossum42cefd01997-10-05 15:27:29 +0000824object derived from the root for all exceptions, the built-in name
Fred Drakef8830d11998-04-23 14:06:01 +0000825\exception{Exception} (accessible in \C{} as \cdata{PyExc_Exception}).
826In this case the \member{__module__} attribute of the new class is set to the
Guido van Rossum42cefd01997-10-05 15:27:29 +0000827first part (up to the last dot) of the \var{name} argument, and the
828class name is set to the last part (after the last dot). When the
829user has specified the \code{-X} command line option to use string
830exceptions, for backward compatibility, or when the \var{base}
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000831argument is not a class object (and not \NULL{}), a string object
Guido van Rossum42cefd01997-10-05 15:27:29 +0000832created from the entire \var{name} argument is returned. The
833\var{base} argument can be used to specify an alternate base class.
834The \var{dict} argument can be used to specify a dictionary of class
835variables and methods.
836\end{cfuncdesc}
837
838
Guido van Rossumae110af1997-05-22 20:11:52 +0000839\section{Standard Exceptions}
Fred Drakef39ed671998-02-26 22:01:23 +0000840\label{standardExceptions}
Guido van Rossumae110af1997-05-22 20:11:52 +0000841
842All standard Python exceptions are available as global variables whose
Fred Drakee058b4f1998-02-16 06:15:35 +0000843names are \samp{PyExc_} followed by the Python exception name.
Fred Drakef8830d11998-04-23 14:06:01 +0000844These have the type \ctype{PyObject *}; they are all either class
Fred Drakee058b4f1998-02-16 06:15:35 +0000845objects or string objects, depending on the use of the \code{-X}
846option to the interpreter. For completeness, here are all the
Fred Drake9d20ac31998-02-16 15:27:08 +0000847variables:
Fred Drakef8830d11998-04-23 14:06:01 +0000848\cdata{PyExc_Exception},
849\cdata{PyExc_StandardError},
850\cdata{PyExc_ArithmeticError},
851\cdata{PyExc_LookupError},
852\cdata{PyExc_AssertionError},
853\cdata{PyExc_AttributeError},
854\cdata{PyExc_EOFError},
855\cdata{PyExc_FloatingPointError},
856\cdata{PyExc_IOError},
857\cdata{PyExc_ImportError},
858\cdata{PyExc_IndexError},
859\cdata{PyExc_KeyError},
860\cdata{PyExc_KeyboardInterrupt},
861\cdata{PyExc_MemoryError},
862\cdata{PyExc_NameError},
863\cdata{PyExc_OverflowError},
864\cdata{PyExc_RuntimeError},
865\cdata{PyExc_SyntaxError},
866\cdata{PyExc_SystemError},
867\cdata{PyExc_SystemExit},
868\cdata{PyExc_TypeError},
869\cdata{PyExc_ValueError},
870\cdata{PyExc_ZeroDivisionError}.
Guido van Rossumae110af1997-05-22 20:11:52 +0000871
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000872
873\chapter{Utilities}
Fred Drakef39ed671998-02-26 22:01:23 +0000874\label{utilities}
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000875
876The functions in this chapter perform various utility tasks, such as
Fred Drakeb0a78731998-01-13 18:51:10 +0000877parsing function arguments and constructing Python values from \C{}
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000878values.
879
Guido van Rossum42cefd01997-10-05 15:27:29 +0000880\section{OS Utilities}
Fred Drakef39ed671998-02-26 22:01:23 +0000881\label{os}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000882
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000883\begin{cfuncdesc}{int}{Py_FdIsInteractive}{FILE *fp, char *filename}
Fred Drakee058b4f1998-02-16 06:15:35 +0000884Return true (nonzero) if the standard I/O file \var{fp} with name
885\var{filename} is deemed interactive. This is the case for files for
886which \samp{isatty(fileno(\var{fp}))} is true. If the global flag
Fred Drakef8830d11998-04-23 14:06:01 +0000887\cdata{Py_InteractiveFlag} is true, this function also returns true if
Fred Drakee058b4f1998-02-16 06:15:35 +0000888the \var{name} pointer is \NULL{} or if the name is equal to one of
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000889the strings \code{"<stdin>"} or \code{"???"}.
890\end{cfuncdesc}
891
892\begin{cfuncdesc}{long}{PyOS_GetLastModificationTime}{char *filename}
Fred Drakee058b4f1998-02-16 06:15:35 +0000893Return the time of last modification of the file \var{filename}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000894The result is encoded in the same way as the timestamp returned by
Fred Drakee058b4f1998-02-16 06:15:35 +0000895the standard \C{} library function \cfunction{time()}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000896\end{cfuncdesc}
897
898
Fred Drakee5bf8b21998-02-12 21:22:28 +0000899\section{Process Control}
Fred Drakef39ed671998-02-26 22:01:23 +0000900\label{processControl}
Fred Drakee5bf8b21998-02-12 21:22:28 +0000901
902\begin{cfuncdesc}{void}{Py_FatalError}{char *message}
903Print a fatal error message and kill the process. No cleanup is
904performed. This function should only be invoked when a condition is
905detected that would make it dangerous to continue using the Python
906interpreter; e.g., when the object administration appears to be
Fred Drakee058b4f1998-02-16 06:15:35 +0000907corrupted. On \UNIX{}, the standard \C{} library function
908\cfunction{abort()} is called which will attempt to produce a
909\file{core} file.
Fred Drakee5bf8b21998-02-12 21:22:28 +0000910\end{cfuncdesc}
911
912\begin{cfuncdesc}{void}{Py_Exit}{int status}
Fred Drakee058b4f1998-02-16 06:15:35 +0000913Exit the current process. This calls \cfunction{Py_Finalize()} and
914then calls the standard \C{} library function
915\code{exit(\var{status})}.
Fred Drakee5bf8b21998-02-12 21:22:28 +0000916\end{cfuncdesc}
917
918\begin{cfuncdesc}{int}{Py_AtExit}{void (*func) ()}
919Register a cleanup function to be called by \cfunction{Py_Finalize()}.
920The cleanup function will be called with no arguments and should
921return no value. At most 32 cleanup functions can be registered.
922When the registration is successful, \cfunction{Py_AtExit()} returns
923\code{0}; on failure, it returns \code{-1}. The cleanup function
924registered last is called first. Each cleanup function will be called
925at most once. Since Python's internal finallization will have
926completed before the cleanup function, no Python APIs should be called
927by \var{func}.
928\end{cfuncdesc}
929
930
931\section{Importing Modules}
Fred Drakef39ed671998-02-26 22:01:23 +0000932\label{importing}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000933
Fred Drakec6fa34e1998-04-02 06:47:24 +0000934\begin{cfuncdesc}{PyObject*}{PyImport_ImportModule}{char *name}
Fred Drakee058b4f1998-02-16 06:15:35 +0000935This is a simplified interface to \cfunction{PyImport_ImportModuleEx()}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000936below, leaving the \var{globals} and \var{locals} arguments set to
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000937\NULL{}. When the \var{name} argument contains a dot (i.e., when
Guido van Rossum42cefd01997-10-05 15:27:29 +0000938it specifies a submodule of a package), the \var{fromlist} argument is
939set to the list \code{['*']} so that the return value is the named
940module rather than the top-level package containing it as would
941otherwise be the case. (Unfortunately, this has an additional side
942effect when \var{name} in fact specifies a subpackage instead of a
943submodule: the submodules specified in the package's \code{__all__}
944variable are loaded.) Return a new reference to the imported module,
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000945or \NULL{} with an exception set on failure (the module may still
Fred Drakec6fa34e1998-04-02 06:47:24 +0000946be created in this case --- examine \code{sys.modules} to find out).
Guido van Rossum42cefd01997-10-05 15:27:29 +0000947\end{cfuncdesc}
948
Fred Drakec6fa34e1998-04-02 06:47:24 +0000949\begin{cfuncdesc}{PyObject*}{PyImport_ImportModuleEx}{char *name, PyObject *globals, PyObject *locals, PyObject *fromlist}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000950Import a module. This is best described by referring to the built-in
Fred Drake53fb7721998-02-16 06:23:20 +0000951Python function \function{__import__()}\bifuncindex{__import__}, as
952the standard \function{__import__()} function calls this function
953directly.
Guido van Rossum42cefd01997-10-05 15:27:29 +0000954
Guido van Rossum42cefd01997-10-05 15:27:29 +0000955The return value is a new reference to the imported module or
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000956top-level package, or \NULL{} with an exception set on failure
Guido van Rossumc44d3d61997-10-06 05:10:47 +0000957(the module may still be created in this case). Like for
Fred Drakee058b4f1998-02-16 06:15:35 +0000958\function{__import__()}, the return value when a submodule of a
959package was requested is normally the top-level package, unless a
960non-empty \var{fromlist} was given.
Guido van Rossum42cefd01997-10-05 15:27:29 +0000961\end{cfuncdesc}
962
Fred Drakec6fa34e1998-04-02 06:47:24 +0000963\begin{cfuncdesc}{PyObject*}{PyImport_Import}{PyObject *name}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000964This is a higher-level interface that calls the current ``import hook
Fred Drakee058b4f1998-02-16 06:15:35 +0000965function''. It invokes the \function{__import__()} function from the
Guido van Rossum42cefd01997-10-05 15:27:29 +0000966\code{__builtins__} of the current globals. This means that the
967import is done using whatever import hooks are installed in the
Fred Drake4de05a91998-02-16 14:25:26 +0000968current environment, e.g. by \module{rexec}\refstmodindex{rexec} or
969\module{ihooks}\refstmodindex{ihooks}.
Guido van Rossum42cefd01997-10-05 15:27:29 +0000970\end{cfuncdesc}
971
Fred Drakec6fa34e1998-04-02 06:47:24 +0000972\begin{cfuncdesc}{PyObject*}{PyImport_ReloadModule}{PyObject *m}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000973Reload a module. This is best described by referring to the built-in
Fred Drake53fb7721998-02-16 06:23:20 +0000974Python function \function{reload()}\bifuncindex{reload}, as the standard
Fred Drakee058b4f1998-02-16 06:15:35 +0000975\function{reload()} function calls this function directly. Return a
976new reference to the reloaded module, or \NULL{} with an exception set
977on failure (the module still exists in this case).
Guido van Rossum42cefd01997-10-05 15:27:29 +0000978\end{cfuncdesc}
979
Fred Drakec6fa34e1998-04-02 06:47:24 +0000980\begin{cfuncdesc}{PyObject*}{PyImport_AddModule}{char *name}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000981Return the module object corresponding to a module name. The
982\var{name} argument may be of the form \code{package.module}). First
983check the modules dictionary if there's one there, and if not, create
984a new one and insert in in the modules dictionary. Because the former
985action is most common, this does not return a new reference, and you
Guido van Rossuma096a2e1998-11-02 17:02:42 +0000986do not own the returned reference.
987Warning: this function does not load or import the module; if the
988module wasn't already loaded, you will get an empty module object.
989Use \cfunction{PyImport_ImportModule()} or one of its variants to
990import a module.
991Return \NULL{} with an
Fred Drakef8830d11998-04-23 14:06:01 +0000992exception set on failure. \strong{Note:} this function returns
Guido van Rossum44475131998-04-21 15:30:01 +0000993a ``borrowed'' reference.
Guido van Rossum42cefd01997-10-05 15:27:29 +0000994\end{cfuncdesc}
995
Fred Drakec6fa34e1998-04-02 06:47:24 +0000996\begin{cfuncdesc}{PyObject*}{PyImport_ExecCodeModule}{char *name, PyObject *co}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000997Given a module name (possibly of the form \code{package.module}) and a
998code object read from a Python bytecode file or obtained from the
Fred Drake53fb7721998-02-16 06:23:20 +0000999built-in function \function{compile()}\bifuncindex{compile}, load the
1000module. Return a new reference to the module object, or \NULL{} with
1001an exception set if an error occurred (the module may still be created
1002in this case). (This function would reload the module if it was
1003already imported.)
Guido van Rossum42cefd01997-10-05 15:27:29 +00001004\end{cfuncdesc}
1005
1006\begin{cfuncdesc}{long}{PyImport_GetMagicNumber}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00001007Return the magic number for Python bytecode files (a.k.a. \file{.pyc}
1008and \file{.pyo} files). The magic number should be present in the
Guido van Rossum42cefd01997-10-05 15:27:29 +00001009first four bytes of the bytecode file, in little-endian byte order.
1010\end{cfuncdesc}
1011
Fred Drakec6fa34e1998-04-02 06:47:24 +00001012\begin{cfuncdesc}{PyObject*}{PyImport_GetModuleDict}{}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001013Return the dictionary used for the module administration
1014(a.k.a. \code{sys.modules}). Note that this is a per-interpreter
1015variable.
1016\end{cfuncdesc}
1017
1018\begin{cfuncdesc}{void}{_PyImport_Init}{}
1019Initialize the import mechanism. For internal use only.
1020\end{cfuncdesc}
1021
1022\begin{cfuncdesc}{void}{PyImport_Cleanup}{}
1023Empty the module table. For internal use only.
1024\end{cfuncdesc}
1025
1026\begin{cfuncdesc}{void}{_PyImport_Fini}{}
1027Finalize the import mechanism. For internal use only.
1028\end{cfuncdesc}
1029
Fred Drakec6fa34e1998-04-02 06:47:24 +00001030\begin{cfuncdesc}{PyObject*}{_PyImport_FindExtension}{char *, char *}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001031For internal use only.
Guido van Rossum5b8a5231997-12-30 04:38:44 +00001032\end{cfuncdesc}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001033
Fred Drakec6fa34e1998-04-02 06:47:24 +00001034\begin{cfuncdesc}{PyObject*}{_PyImport_FixupExtension}{char *, char *}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001035For internal use only.
Guido van Rossum5b8a5231997-12-30 04:38:44 +00001036\end{cfuncdesc}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001037
1038\begin{cfuncdesc}{int}{PyImport_ImportFrozenModule}{char *}
1039Load a frozen module. Return \code{1} for success, \code{0} if the
1040module is not found, and \code{-1} with an exception set if the
1041initialization failed. To access the imported module on a successful
Fred Drakee058b4f1998-02-16 06:15:35 +00001042load, use \cfunction{PyImport_ImportModule()}.
1043(Note the misnomer --- this function would reload the module if it was
Guido van Rossum42cefd01997-10-05 15:27:29 +00001044already imported.)
1045\end{cfuncdesc}
1046
1047\begin{ctypedesc}{struct _frozen}
1048This is the structure type definition for frozen module descriptors,
Fred Drakec6fa34e1998-04-02 06:47:24 +00001049as generated by the \program{freeze}\index{freeze utility} utility
1050(see \file{Tools/freeze/} in the Python source distribution). Its
1051definition is:
1052
Guido van Rossum9faf4c51997-10-07 14:38:54 +00001053\begin{verbatim}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001054struct _frozen {
Fred Drake36fbe761997-10-13 18:18:33 +00001055 char *name;
1056 unsigned char *code;
1057 int size;
Guido van Rossum42cefd01997-10-05 15:27:29 +00001058};
Guido van Rossum9faf4c51997-10-07 14:38:54 +00001059\end{verbatim}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001060\end{ctypedesc}
1061
Fred Drakec6fa34e1998-04-02 06:47:24 +00001062\begin{cvardesc}{struct _frozen*}{PyImport_FrozenModules}
Fred Drakef8830d11998-04-23 14:06:01 +00001063This pointer is initialized to point to an array of \ctype{struct
Guido van Rossum580aa8d1997-11-25 15:34:51 +00001064_frozen} records, terminated by one whose members are all \NULL{}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001065or zero. When a frozen module is imported, it is searched in this
Fred Drakec6fa34e1998-04-02 06:47:24 +00001066table. Third-party code could play tricks with this to provide a
Guido van Rossum42cefd01997-10-05 15:27:29 +00001067dynamically created collection of frozen modules.
1068\end{cvardesc}
1069
1070
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001071\chapter{Abstract Objects Layer}
Fred Drakef39ed671998-02-26 22:01:23 +00001072\label{abstract}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001073
1074The functions in this chapter interact with Python objects regardless
1075of their type, or with wide classes of object types (e.g. all
1076numerical types, or all sequence types). When used on object types
1077for which they do not apply, they will flag a Python exception.
1078
1079\section{Object Protocol}
Fred Drakef39ed671998-02-26 22:01:23 +00001080\label{object}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001081
1082\begin{cfuncdesc}{int}{PyObject_Print}{PyObject *o, FILE *fp, int flags}
Fred Drakee058b4f1998-02-16 06:15:35 +00001083Print an object \var{o}, on file \var{fp}. Returns \code{-1} on error
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001084The flags argument is used to enable certain printing
Fred Drakee058b4f1998-02-16 06:15:35 +00001085options. The only option currently supported is
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001086\constant{Py_PRINT_RAW}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001087\end{cfuncdesc}
1088
1089\begin{cfuncdesc}{int}{PyObject_HasAttrString}{PyObject *o, char *attr_name}
Fred Drakee058b4f1998-02-16 06:15:35 +00001090Returns \code{1} if \var{o} has the attribute \var{attr_name}, and
1091\code{0} otherwise. This is equivalent to the Python expression
1092\samp{hasattr(\var{o}, \var{attr_name})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001093This function always succeeds.
1094\end{cfuncdesc}
1095
1096\begin{cfuncdesc}{PyObject*}{PyObject_GetAttrString}{PyObject *o, char *attr_name}
Fred Drakee058b4f1998-02-16 06:15:35 +00001097Retrieve an attribute named \var{attr_name} from object \var{o}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001098Returns the attribute value on success, or \NULL{} on failure.
Fred Drakee058b4f1998-02-16 06:15:35 +00001099This is the equivalent of the Python expression
1100\samp{\var{o}.\var{attr_name}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001101\end{cfuncdesc}
1102
1103
1104\begin{cfuncdesc}{int}{PyObject_HasAttr}{PyObject *o, PyObject *attr_name}
Fred Drakee058b4f1998-02-16 06:15:35 +00001105Returns \code{1} if \var{o} has the attribute \var{attr_name}, and
1106\code{0} otherwise. This is equivalent to the Python expression
1107\samp{hasattr(\var{o}, \var{attr_name})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001108This function always succeeds.
1109\end{cfuncdesc}
1110
1111
1112\begin{cfuncdesc}{PyObject*}{PyObject_GetAttr}{PyObject *o, PyObject *attr_name}
Fred Drakee058b4f1998-02-16 06:15:35 +00001113Retrieve an attribute named \var{attr_name} from object \var{o}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001114Returns the attribute value on success, or \NULL{} on failure.
Fred Drakee058b4f1998-02-16 06:15:35 +00001115This is the equivalent of the Python expression
1116\samp{\var{o}.\var{attr_name}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001117\end{cfuncdesc}
1118
1119
1120\begin{cfuncdesc}{int}{PyObject_SetAttrString}{PyObject *o, char *attr_name, PyObject *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001121Set the value of the attribute named \var{attr_name}, for object
1122\var{o}, to the value \var{v}. Returns \code{-1} on failure. This is
1123the equivalent of the Python statement \samp{\var{o}.\var{attr_name} =
1124\var{v}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001125\end{cfuncdesc}
1126
1127
1128\begin{cfuncdesc}{int}{PyObject_SetAttr}{PyObject *o, PyObject *attr_name, PyObject *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001129Set the value of the attribute named \var{attr_name}, for
1130object \var{o},
1131to the value \var{v}. Returns \code{-1} on failure. This is
1132the equivalent of the Python statement \samp{\var{o}.\var{attr_name} =
1133\var{v}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001134\end{cfuncdesc}
1135
1136
1137\begin{cfuncdesc}{int}{PyObject_DelAttrString}{PyObject *o, char *attr_name}
Fred Drakee058b4f1998-02-16 06:15:35 +00001138Delete attribute named \var{attr_name}, for object \var{o}. Returns
1139\code{-1} on failure. This is the equivalent of the Python
1140statement: \samp{del \var{o}.\var{attr_name}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001141\end{cfuncdesc}
1142
1143
1144\begin{cfuncdesc}{int}{PyObject_DelAttr}{PyObject *o, PyObject *attr_name}
Fred Drakee058b4f1998-02-16 06:15:35 +00001145Delete attribute named \var{attr_name}, for object \var{o}. Returns
1146\code{-1} on failure. This is the equivalent of the Python
1147statement \samp{del \var{o}.\var{attr_name}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001148\end{cfuncdesc}
1149
1150
1151\begin{cfuncdesc}{int}{PyObject_Cmp}{PyObject *o1, PyObject *o2, int *result}
Fred Drakee058b4f1998-02-16 06:15:35 +00001152Compare the values of \var{o1} and \var{o2} using a routine provided
1153by \var{o1}, if one exists, otherwise with a routine provided by
1154\var{o2}. The result of the comparison is returned in \var{result}.
1155Returns \code{-1} on failure. This is the equivalent of the Python
1156statement \samp{\var{result} = cmp(\var{o1}, \var{o2})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001157\end{cfuncdesc}
1158
1159
1160\begin{cfuncdesc}{int}{PyObject_Compare}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001161Compare the values of \var{o1} and \var{o2} using a routine provided
1162by \var{o1}, if one exists, otherwise with a routine provided by
1163\var{o2}. Returns the result of the comparison on success. On error,
1164the value returned is undefined; use \cfunction{PyErr_Occurred()} to
1165detect an error. This is equivalent to the
1166Python expression \samp{cmp(\var{o1}, \var{o2})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001167\end{cfuncdesc}
1168
1169
1170\begin{cfuncdesc}{PyObject*}{PyObject_Repr}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001171Compute the string representation of object, \var{o}. Returns the
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001172string representation on success, \NULL{} on failure. This is
Fred Drakee058b4f1998-02-16 06:15:35 +00001173the equivalent of the Python expression \samp{repr(\var{o})}.
1174Called by the \function{repr()}\bifuncindex{repr} built-in function
1175and by reverse quotes.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001176\end{cfuncdesc}
1177
1178
1179\begin{cfuncdesc}{PyObject*}{PyObject_Str}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001180Compute the string representation of object \var{o}. Returns the
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001181string representation on success, \NULL{} on failure. This is
Fred Drakee058b4f1998-02-16 06:15:35 +00001182the equivalent of the Python expression \samp{str(\var{o})}.
1183Called by the \function{str()}\bifuncindex{str} built-in function and
1184by the \keyword{print} statement.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001185\end{cfuncdesc}
1186
1187
1188\begin{cfuncdesc}{int}{PyCallable_Check}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001189Determine if the object \var{o}, is callable. Return \code{1} if the
1190object is callable and \code{0} otherwise.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001191This function always succeeds.
1192\end{cfuncdesc}
1193
1194
1195\begin{cfuncdesc}{PyObject*}{PyObject_CallObject}{PyObject *callable_object, PyObject *args}
Fred Drakee058b4f1998-02-16 06:15:35 +00001196Call a callable Python object \var{callable_object}, with
1197arguments given by the tuple \var{args}. If no arguments are
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001198needed, then args may be \NULL{}. Returns the result of the
1199call on success, or \NULL{} on failure. This is the equivalent
Fred Drakee058b4f1998-02-16 06:15:35 +00001200of the Python expression \samp{apply(\var{o}, \var{args})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001201\end{cfuncdesc}
1202
1203\begin{cfuncdesc}{PyObject*}{PyObject_CallFunction}{PyObject *callable_object, char *format, ...}
Fred Drakee058b4f1998-02-16 06:15:35 +00001204Call a callable Python object \var{callable_object}, with a
Fred Drakeb0a78731998-01-13 18:51:10 +00001205variable number of \C{} arguments. The \C{} arguments are described
Fred Drakee058b4f1998-02-16 06:15:35 +00001206using a \cfunction{Py_BuildValue()} style format string. The format may
1207be \NULL{}, indicating that no arguments are provided. Returns the
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001208result of the call on success, or \NULL{} on failure. This is
Fred Drakee058b4f1998-02-16 06:15:35 +00001209the equivalent of the Python expression \samp{apply(\var{o},
1210\var{args})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001211\end{cfuncdesc}
1212
1213
1214\begin{cfuncdesc}{PyObject*}{PyObject_CallMethod}{PyObject *o, char *m, char *format, ...}
Fred Drakee058b4f1998-02-16 06:15:35 +00001215Call the method named \var{m} of object \var{o} with a variable number
1216of C arguments. The \C{} arguments are described by a
1217\cfunction{Py_BuildValue()} format string. The format may be \NULL{},
1218indicating that no arguments are provided. Returns the result of the
1219call on success, or \NULL{} on failure. This is the equivalent of the
1220Python expression \samp{\var{o}.\var{method}(\var{args})}.
1221Note that Special method names, such as \method{__add__()},
1222\method{__getitem__()}, and so on are not supported. The specific
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001223abstract-object routines for these must be used.
1224\end{cfuncdesc}
1225
1226
1227\begin{cfuncdesc}{int}{PyObject_Hash}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001228Compute and return the hash value of an object \var{o}. On
1229failure, return \code{-1}. This is the equivalent of the Python
1230expression \samp{hash(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001231\end{cfuncdesc}
1232
1233
1234\begin{cfuncdesc}{int}{PyObject_IsTrue}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001235Returns \code{1} if the object \var{o} is considered to be true, and
1236\code{0} otherwise. This is equivalent to the Python expression
1237\samp{not not \var{o}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001238This function always succeeds.
1239\end{cfuncdesc}
1240
1241
1242\begin{cfuncdesc}{PyObject*}{PyObject_Type}{PyObject *o}
1243On success, returns a type object corresponding to the object
Fred Drakee058b4f1998-02-16 06:15:35 +00001244type of object \var{o}. On failure, returns \NULL{}. This is
1245equivalent to the Python expression \samp{type(\var{o})}.
Fred Drake53fb7721998-02-16 06:23:20 +00001246\bifuncindex{type}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001247\end{cfuncdesc}
1248
1249\begin{cfuncdesc}{int}{PyObject_Length}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001250Return the length of object \var{o}. If the object \var{o} provides
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001251both sequence and mapping protocols, the sequence length is
Fred Drakee058b4f1998-02-16 06:15:35 +00001252returned. On error, \code{-1} is returned. This is the equivalent
1253to the Python expression \samp{len(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001254\end{cfuncdesc}
1255
1256
1257\begin{cfuncdesc}{PyObject*}{PyObject_GetItem}{PyObject *o, PyObject *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001258Return element of \var{o} corresponding to the object \var{key} or
1259\NULL{} on failure. This is the equivalent of the Python expression
1260\samp{\var{o}[\var{key}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001261\end{cfuncdesc}
1262
1263
1264\begin{cfuncdesc}{int}{PyObject_SetItem}{PyObject *o, PyObject *key, PyObject *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001265Map the object \var{key} to the value \var{v}.
1266Returns \code{-1} on failure. This is the equivalent
1267of the Python statement \samp{\var{o}[\var{key}] = \var{v}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001268\end{cfuncdesc}
1269
1270
1271\begin{cfuncdesc}{int}{PyObject_DelItem}{PyObject *o, PyObject *key, PyObject *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001272Delete the mapping for \var{key} from \var{o}. Returns \code{-1} on
1273failure. This is the equivalent of the Python statement \samp{del
1274\var{o}[\var{key}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001275\end{cfuncdesc}
1276
1277
1278\section{Number Protocol}
Fred Drakef39ed671998-02-26 22:01:23 +00001279\label{number}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001280
1281\begin{cfuncdesc}{int}{PyNumber_Check}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001282Returns \code{1} if the object \var{o} provides numeric protocols, and
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001283false otherwise.
1284This function always succeeds.
1285\end{cfuncdesc}
1286
1287
1288\begin{cfuncdesc}{PyObject*}{PyNumber_Add}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001289Returns the result of adding \var{o1} and \var{o2}, or \NULL{} on
1290failure. This is the equivalent of the Python expression
1291\samp{\var{o1} + \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001292\end{cfuncdesc}
1293
1294
1295\begin{cfuncdesc}{PyObject*}{PyNumber_Subtract}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001296Returns the result of subtracting \var{o2} from \var{o1}, or \NULL{}
1297on failure. This is the equivalent of the Python expression
1298\samp{\var{o1} - \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001299\end{cfuncdesc}
1300
1301
1302\begin{cfuncdesc}{PyObject*}{PyNumber_Multiply}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001303Returns the result of multiplying \var{o1} and \var{o2}, or \NULL{} on
1304failure. This is the equivalent of the Python expression
1305\samp{\var{o1} * \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001306\end{cfuncdesc}
1307
1308
1309\begin{cfuncdesc}{PyObject*}{PyNumber_Divide}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001310Returns the result of dividing \var{o1} by \var{o2}, or \NULL{} on
1311failure.
1312This is the equivalent of the Python expression \samp{\var{o1} /
1313\var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001314\end{cfuncdesc}
1315
1316
1317\begin{cfuncdesc}{PyObject*}{PyNumber_Remainder}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001318Returns the remainder of dividing \var{o1} by \var{o2}, or \NULL{} on
1319failure. This is the equivalent of the Python expression
1320\samp{\var{o1} \% \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001321\end{cfuncdesc}
1322
1323
1324\begin{cfuncdesc}{PyObject*}{PyNumber_Divmod}{PyObject *o1, PyObject *o2}
Fred Drake53fb7721998-02-16 06:23:20 +00001325See the built-in function \function{divmod()}\bifuncindex{divmod}.
1326Returns \NULL{} on failure. This is the equivalent of the Python
1327expression \samp{divmod(\var{o1}, \var{o2})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001328\end{cfuncdesc}
1329
1330
1331\begin{cfuncdesc}{PyObject*}{PyNumber_Power}{PyObject *o1, PyObject *o2, PyObject *o3}
Fred Drake53fb7721998-02-16 06:23:20 +00001332See the built-in function \function{pow()}\bifuncindex{pow}. Returns
1333\NULL{} on failure. This is the equivalent of the Python expression
Fred Drakee058b4f1998-02-16 06:15:35 +00001334\samp{pow(\var{o1}, \var{o2}, \var{o3})}, where \var{o3} is optional.
Fred Drakef8830d11998-04-23 14:06:01 +00001335If \var{o3} is to be ignored, pass \cdata{Py_None} in its place.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001336\end{cfuncdesc}
1337
1338
1339\begin{cfuncdesc}{PyObject*}{PyNumber_Negative}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001340Returns the negation of \var{o} on success, or \NULL{} on failure.
1341This is the equivalent of the Python expression \samp{-\var{o}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001342\end{cfuncdesc}
1343
1344
1345\begin{cfuncdesc}{PyObject*}{PyNumber_Positive}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001346Returns \var{o} on success, or \NULL{} on failure.
1347This is the equivalent of the Python expression \samp{+\var{o}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001348\end{cfuncdesc}
1349
1350
1351\begin{cfuncdesc}{PyObject*}{PyNumber_Absolute}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001352Returns the absolute value of \var{o}, or \NULL{} on failure. This is
1353the equivalent of the Python expression \samp{abs(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001354\end{cfuncdesc}
1355
1356
1357\begin{cfuncdesc}{PyObject*}{PyNumber_Invert}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001358Returns the bitwise negation of \var{o} on success, or \NULL{} on
1359failure. This is the equivalent of the Python expression
1360\samp{\~\var{o}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001361\end{cfuncdesc}
1362
1363
1364\begin{cfuncdesc}{PyObject*}{PyNumber_Lshift}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001365Returns the result of left shifting \var{o1} by \var{o2} on success,
1366or \NULL{} on failure. This is the equivalent of the Python
1367expression \samp{\var{o1} << \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001368\end{cfuncdesc}
1369
1370
1371\begin{cfuncdesc}{PyObject*}{PyNumber_Rshift}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001372Returns the result of right shifting \var{o1} by \var{o2} on success,
1373or \NULL{} on failure. This is the equivalent of the Python
1374expression \samp{\var{o1} >> \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001375\end{cfuncdesc}
1376
1377
1378\begin{cfuncdesc}{PyObject*}{PyNumber_And}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001379Returns the result of ``anding'' \var{o2} and \var{o2} on success and
1380\NULL{} on failure. This is the equivalent of the Python
1381expression \samp{\var{o1} and \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001382\end{cfuncdesc}
1383
1384
1385\begin{cfuncdesc}{PyObject*}{PyNumber_Xor}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001386Returns the bitwise exclusive or of \var{o1} by \var{o2} on success,
1387or \NULL{} on failure. This is the equivalent of the Python
1388expression \samp{\var{o1} \^{ }\var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001389\end{cfuncdesc}
1390
1391\begin{cfuncdesc}{PyObject*}{PyNumber_Or}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001392Returns the result of \var{o1} and \var{o2} on success, or \NULL{} on
1393failure. This is the equivalent of the Python expression
1394\samp{\var{o1} or \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001395\end{cfuncdesc}
1396
1397
Fred Drakee058b4f1998-02-16 06:15:35 +00001398\begin{cfuncdesc}{PyObject*}{PyNumber_Coerce}{PyObject **p1, PyObject **p2}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001399This function takes the addresses of two variables of type
Fred Drakef8830d11998-04-23 14:06:01 +00001400\ctype{PyObject*}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001401
Fred Drakee058b4f1998-02-16 06:15:35 +00001402If the objects pointed to by \code{*\var{p1}} and \code{*\var{p2}}
1403have the same type, increment their reference count and return
1404\code{0} (success). If the objects can be converted to a common
1405numeric type, replace \code{*p1} and \code{*p2} by their converted
1406value (with 'new' reference counts), and return \code{0}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001407If no conversion is possible, or if some other error occurs,
Fred Drakee058b4f1998-02-16 06:15:35 +00001408return \code{-1} (failure) and don't increment the reference counts.
1409The call \code{PyNumber_Coerce(\&o1, \&o2)} is equivalent to the
1410Python statement \samp{\var{o1}, \var{o2} = coerce(\var{o1},
1411\var{o2})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001412\end{cfuncdesc}
1413
1414
1415\begin{cfuncdesc}{PyObject*}{PyNumber_Int}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001416Returns the \var{o} converted to an integer object on success, or
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001417\NULL{} on failure. This is the equivalent of the Python
Fred Drakee058b4f1998-02-16 06:15:35 +00001418expression \samp{int(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001419\end{cfuncdesc}
1420
1421
1422\begin{cfuncdesc}{PyObject*}{PyNumber_Long}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001423Returns the \var{o} converted to a long integer object on success,
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001424or \NULL{} on failure. This is the equivalent of the Python
Fred Drakee058b4f1998-02-16 06:15:35 +00001425expression \samp{long(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001426\end{cfuncdesc}
1427
1428
1429\begin{cfuncdesc}{PyObject*}{PyNumber_Float}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001430Returns the \var{o} converted to a float object on success, or \NULL{}
1431on failure. This is the equivalent of the Python expression
1432\samp{float(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001433\end{cfuncdesc}
1434
1435
Fred Drakef44617d1998-02-12 20:57:15 +00001436\section{Sequence Protocol}
Fred Drakef39ed671998-02-26 22:01:23 +00001437\label{sequence}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001438
1439\begin{cfuncdesc}{int}{PySequence_Check}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001440Return \code{1} if the object provides sequence protocol, and \code{0}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001441otherwise.
1442This function always succeeds.
1443\end{cfuncdesc}
1444
1445
1446\begin{cfuncdesc}{PyObject*}{PySequence_Concat}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001447Return the concatenation of \var{o1} and \var{o2} on success, and \NULL{} on
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001448failure. This is the equivalent of the Python
Fred Drakee058b4f1998-02-16 06:15:35 +00001449expression \samp{\var{o1} + \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001450\end{cfuncdesc}
1451
1452
1453\begin{cfuncdesc}{PyObject*}{PySequence_Repeat}{PyObject *o, int count}
Fred Drakee058b4f1998-02-16 06:15:35 +00001454Return the result of repeating sequence object \var{o} \var{count}
1455times, or \NULL{} on failure. This is the equivalent of the Python
1456expression \samp{\var{o} * \var{count}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001457\end{cfuncdesc}
1458
1459
1460\begin{cfuncdesc}{PyObject*}{PySequence_GetItem}{PyObject *o, int i}
Fred Drakee058b4f1998-02-16 06:15:35 +00001461Return the \var{i}th element of \var{o}, or \NULL{} on failure. This
1462is the equivalent of the Python expression \samp{\var{o}[\var{i}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001463\end{cfuncdesc}
1464
1465
1466\begin{cfuncdesc}{PyObject*}{PySequence_GetSlice}{PyObject *o, int i1, int i2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001467Return the slice of sequence object \var{o} between \var{i1} and
1468\var{i2}, or \NULL{} on failure. This is the equivalent of the Python
1469expression \samp{\var{o}[\var{i1}:\var{i2}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001470\end{cfuncdesc}
1471
1472
1473\begin{cfuncdesc}{int}{PySequence_SetItem}{PyObject *o, int i, PyObject *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001474Assign object \var{v} to the \var{i}th element of \var{o}.
1475Returns \code{-1} on failure. This is the equivalent of the Python
1476statement \samp{\var{o}[\var{i}] = \var{v}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001477\end{cfuncdesc}
1478
1479\begin{cfuncdesc}{int}{PySequence_DelItem}{PyObject *o, int i}
Fred Drakee058b4f1998-02-16 06:15:35 +00001480Delete the \var{i}th element of object \var{v}. Returns
1481\code{-1} on failure. This is the equivalent of the Python
1482statement \samp{del \var{o}[\var{i}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001483\end{cfuncdesc}
1484
1485\begin{cfuncdesc}{int}{PySequence_SetSlice}{PyObject *o, int i1, int i2, PyObject *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001486Assign the sequence object \var{v} to the slice in sequence
1487object \var{o} from \var{i1} to \var{i2}. This is the equivalent of
1488the Python statement \samp{\var{o}[\var{i1}:\var{i2}] = \var{v}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001489\end{cfuncdesc}
1490
1491\begin{cfuncdesc}{int}{PySequence_DelSlice}{PyObject *o, int i1, int i2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001492Delete the slice in sequence object \var{o} from \var{i1} to \var{i2}.
1493Returns \code{-1} on failure. This is the equivalent of the Python
1494statement \samp{del \var{o}[\var{i1}:\var{i2}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001495\end{cfuncdesc}
1496
1497\begin{cfuncdesc}{PyObject*}{PySequence_Tuple}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001498Returns the \var{o} as a tuple on success, and \NULL{} on failure.
1499This is equivalent to the Python expression \code{tuple(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001500\end{cfuncdesc}
1501
1502\begin{cfuncdesc}{int}{PySequence_Count}{PyObject *o, PyObject *value}
Fred Drakee058b4f1998-02-16 06:15:35 +00001503Return the number of occurrences of \var{value} in \var{o}, that is,
1504return the number of keys for which \code{\var{o}[\var{key}] ==
1505\var{value}}. On failure, return \code{-1}. This is equivalent to
1506the Python expression \samp{\var{o}.count(\var{value})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001507\end{cfuncdesc}
1508
1509\begin{cfuncdesc}{int}{PySequence_In}{PyObject *o, PyObject *value}
Fred Drakee058b4f1998-02-16 06:15:35 +00001510Determine if \var{o} contains \var{value}. If an item in \var{o} is
1511equal to \var{value}, return \code{1}, otherwise return \code{0}. On
1512error, return \code{-1}. This is equivalent to the Python expression
1513\samp{\var{value} in \var{o}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001514\end{cfuncdesc}
1515
1516\begin{cfuncdesc}{int}{PySequence_Index}{PyObject *o, PyObject *value}
Fred Drakee058b4f1998-02-16 06:15:35 +00001517Return the first index \var{i} for which \code{\var{o}[\var{i}] ==
1518\var{value}}. On error, return \code{-1}. This is equivalent to
1519the Python expression \samp{\var{o}.index(\var{value})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001520\end{cfuncdesc}
1521
Fred Drakef39ed671998-02-26 22:01:23 +00001522
Fred Drakef44617d1998-02-12 20:57:15 +00001523\section{Mapping Protocol}
Fred Drakef39ed671998-02-26 22:01:23 +00001524\label{mapping}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001525
1526\begin{cfuncdesc}{int}{PyMapping_Check}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001527Return \code{1} if the object provides mapping protocol, and \code{0}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001528otherwise.
1529This function always succeeds.
1530\end{cfuncdesc}
1531
1532
1533\begin{cfuncdesc}{int}{PyMapping_Length}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001534Returns the number of keys in object \var{o} on success, and \code{-1}
1535on failure. For objects that do not provide sequence protocol,
1536this is equivalent to the Python expression \samp{len(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001537\end{cfuncdesc}
1538
1539
1540\begin{cfuncdesc}{int}{PyMapping_DelItemString}{PyObject *o, char *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001541Remove the mapping for object \var{key} from the object \var{o}.
1542Return \code{-1} on failure. This is equivalent to
1543the Python statement \samp{del \var{o}[\var{key}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001544\end{cfuncdesc}
1545
1546
1547\begin{cfuncdesc}{int}{PyMapping_DelItem}{PyObject *o, PyObject *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001548Remove the mapping for object \var{key} from the object \var{o}.
1549Return \code{-1} on failure. This is equivalent to
1550the Python statement \samp{del \var{o}[\var{key}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001551\end{cfuncdesc}
1552
1553
1554\begin{cfuncdesc}{int}{PyMapping_HasKeyString}{PyObject *o, char *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001555On success, return \code{1} if the mapping object has the key \var{key}
1556and \code{0} otherwise. This is equivalent to the Python expression
1557\samp{\var{o}.has_key(\var{key})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001558This function always succeeds.
1559\end{cfuncdesc}
1560
1561
1562\begin{cfuncdesc}{int}{PyMapping_HasKey}{PyObject *o, PyObject *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001563Return \code{1} if the mapping object has the key \var{key} and
1564\code{0} otherwise. This is equivalent to the Python expression
1565\samp{\var{o}.has_key(\var{key})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001566This function always succeeds.
1567\end{cfuncdesc}
1568
1569
1570\begin{cfuncdesc}{PyObject*}{PyMapping_Keys}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001571On success, return a list of the keys in object \var{o}. On
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001572failure, return \NULL{}. This is equivalent to the Python
Fred Drakee058b4f1998-02-16 06:15:35 +00001573expression \samp{\var{o}.keys()}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001574\end{cfuncdesc}
1575
1576
1577\begin{cfuncdesc}{PyObject*}{PyMapping_Values}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001578On success, return a list of the values in object \var{o}. On
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001579failure, return \NULL{}. This is equivalent to the Python
Fred Drakee058b4f1998-02-16 06:15:35 +00001580expression \samp{\var{o}.values()}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001581\end{cfuncdesc}
1582
1583
1584\begin{cfuncdesc}{PyObject*}{PyMapping_Items}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001585On success, return a list of the items in object \var{o}, where
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001586each item is a tuple containing a key-value pair. On
1587failure, return \NULL{}. This is equivalent to the Python
Fred Drakee058b4f1998-02-16 06:15:35 +00001588expression \samp{\var{o}.items()}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001589\end{cfuncdesc}
1590
1591\begin{cfuncdesc}{int}{PyMapping_Clear}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001592Make object \var{o} empty. Returns \code{1} on success and \code{0}
1593on failure. This is equivalent to the Python statement
1594\samp{for key in \var{o}.keys(): del \var{o}[key]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001595\end{cfuncdesc}
1596
1597
1598\begin{cfuncdesc}{PyObject*}{PyMapping_GetItemString}{PyObject *o, char *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001599Return element of \var{o} corresponding to the object \var{key} or
1600\NULL{} on failure. This is the equivalent of the Python expression
1601\samp{\var{o}[\var{key}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001602\end{cfuncdesc}
1603
Guido van Rossum0a0f11b1998-10-16 17:43:53 +00001604\begin{cfuncdesc}{int}{PyMapping_SetItemString}{PyObject *o, char *key, PyObject *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001605Map the object \var{key} to the value \var{v} in object \var{o}.
1606Returns \code{-1} on failure. This is the equivalent of the Python
1607statement \samp{\var{o}[\var{key}] = \var{v}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001608\end{cfuncdesc}
1609
1610
1611\section{Constructors}
1612
1613\begin{cfuncdesc}{PyObject*}{PyFile_FromString}{char *file_name, char *mode}
1614On success, returns a new file object that is opened on the
Fred Drakee058b4f1998-02-16 06:15:35 +00001615file given by \var{file_name}, with a file mode given by \var{mode},
1616where \var{mode} has the same semantics as the standard \C{} routine
1617\cfunction{fopen()}. On failure, return \code{-1}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001618\end{cfuncdesc}
1619
1620\begin{cfuncdesc}{PyObject*}{PyFile_FromFile}{FILE *fp, char *file_name, char *mode, int close_on_del}
Fred Drakee058b4f1998-02-16 06:15:35 +00001621Return a new file object for an already opened standard \C{} file
1622pointer, \var{fp}. A file name, \var{file_name}, and open mode,
1623\var{mode}, must be provided as well as a flag, \var{close_on_del},
1624that indicates whether the file is to be closed when the file object
1625is destroyed. On failure, return \code{-1}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001626\end{cfuncdesc}
1627
1628\begin{cfuncdesc}{PyObject*}{PyFloat_FromDouble}{double v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001629Returns a new float object with the value \var{v} on success, and
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001630\NULL{} on failure.
1631\end{cfuncdesc}
1632
1633\begin{cfuncdesc}{PyObject*}{PyInt_FromLong}{long v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001634Returns a new int object with the value \var{v} on success, and
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001635\NULL{} on failure.
1636\end{cfuncdesc}
1637
Fred Drakee058b4f1998-02-16 06:15:35 +00001638\begin{cfuncdesc}{PyObject*}{PyList_New}{int len}
1639Returns a new list of length \var{len} on success, and \NULL{} on
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001640failure.
1641\end{cfuncdesc}
1642
1643\begin{cfuncdesc}{PyObject*}{PyLong_FromLong}{long v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001644Returns a new long object with the value \var{v} on success, and
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001645\NULL{} on failure.
1646\end{cfuncdesc}
1647
1648\begin{cfuncdesc}{PyObject*}{PyLong_FromDouble}{double v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001649Returns a new long object with the value \var{v} on success, and
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001650\NULL{} on failure.
1651\end{cfuncdesc}
1652
1653\begin{cfuncdesc}{PyObject*}{PyDict_New}{}
1654Returns a new empty dictionary on success, and \NULL{} on
1655failure.
1656\end{cfuncdesc}
1657
1658\begin{cfuncdesc}{PyObject*}{PyString_FromString}{char *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001659Returns a new string object with the value \var{v} on success, and
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001660\NULL{} on failure.
1661\end{cfuncdesc}
1662
Fred Drakee058b4f1998-02-16 06:15:35 +00001663\begin{cfuncdesc}{PyObject*}{PyString_FromStringAndSize}{char *v, int len}
1664Returns a new string object with the value \var{v} and length
1665\var{len} on success, and \NULL{} on failure. If \var{v} is \NULL{},
1666the contents of the string are uninitialized.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001667\end{cfuncdesc}
1668
Fred Drakee058b4f1998-02-16 06:15:35 +00001669\begin{cfuncdesc}{PyObject*}{PyTuple_New}{int len}
1670Returns a new tuple of length \var{len} on success, and \NULL{} on
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001671failure.
1672\end{cfuncdesc}
1673
1674
1675\chapter{Concrete Objects Layer}
Fred Drakef39ed671998-02-26 22:01:23 +00001676\label{concrete}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001677
1678The functions in this chapter are specific to certain Python object
1679types. Passing them an object of the wrong type is not a good idea;
1680if you receive an object from a Python program and you are not sure
1681that it has the right type, you must perform a type check first;
1682e.g. to check that an object is a dictionary, use
Fred Drakee5bf8b21998-02-12 21:22:28 +00001683\cfunction{PyDict_Check()}. The chapter is structured like the
1684``family tree'' of Python object types.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001685
1686
Fred Drakee5bf8b21998-02-12 21:22:28 +00001687\section{Fundamental Objects}
Fred Drakef39ed671998-02-26 22:01:23 +00001688\label{fundamental}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001689
Fred Drakee5bf8b21998-02-12 21:22:28 +00001690This section describes Python type objects and the singleton object
1691\code{None}.
1692
1693
1694\subsection{Type Objects}
Fred Drakef39ed671998-02-26 22:01:23 +00001695\label{typeObjects}
Fred Drakee5bf8b21998-02-12 21:22:28 +00001696
1697\begin{ctypedesc}{PyTypeObject}
1698
1699\end{ctypedesc}
1700
1701\begin{cvardesc}{PyObject *}{PyType_Type}
1702
1703\end{cvardesc}
1704
1705
1706\subsection{The None Object}
Fred Drakef39ed671998-02-26 22:01:23 +00001707\label{noneObject}
Fred Drakee5bf8b21998-02-12 21:22:28 +00001708
1709\begin{cvardesc}{PyObject *}{Py_None}
Guido van Rossum44475131998-04-21 15:30:01 +00001710The Python \code{None} object, denoting lack of value. This object has
1711no methods.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001712\end{cvardesc}
1713
1714
1715\section{Sequence Objects}
Fred Drakef39ed671998-02-26 22:01:23 +00001716\label{sequenceObjects}
Fred Drakee5bf8b21998-02-12 21:22:28 +00001717
1718Generic operations on sequence objects were discussed in the previous
1719chapter; this section deals with the specific kinds of sequence
1720objects that are intrinsic to the Python language.
1721
1722
1723\subsection{String Objects}
Fred Drakef39ed671998-02-26 22:01:23 +00001724\label{stringObjects}
Fred Drakee5bf8b21998-02-12 21:22:28 +00001725
1726\begin{ctypedesc}{PyStringObject}
Fred Drakef8830d11998-04-23 14:06:01 +00001727This subtype of \ctype{PyObject} represents a Python string object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001728\end{ctypedesc}
1729
1730\begin{cvardesc}{PyTypeObject}{PyString_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00001731This instance of \ctype{PyTypeObject} represents the Python string type.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001732\end{cvardesc}
1733
1734\begin{cfuncdesc}{int}{PyString_Check}{PyObject *o}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001735Returns true if the object \var{o} is a string object.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001736\end{cfuncdesc}
1737
Fred Drakec6fa34e1998-04-02 06:47:24 +00001738\begin{cfuncdesc}{PyObject*}{PyString_FromStringAndSize}{const char *v,
1739 int len}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001740Returns a new string object with the value \var{v} and length
1741\var{len} on success, and \NULL{} on failure. If \var{v} is \NULL{},
1742the contents of the string are uninitialized.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001743\end{cfuncdesc}
1744
1745\begin{cfuncdesc}{PyObject*}{PyString_FromString}{const char *v}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001746Returns a new string object with the value \var{v} on success, and
1747\NULL{} on failure.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001748\end{cfuncdesc}
1749
1750\begin{cfuncdesc}{int}{PyString_Size}{PyObject *string}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001751Returns the length of the string in string object \var{string}.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001752\end{cfuncdesc}
1753
1754\begin{cfuncdesc}{char*}{PyString_AsString}{PyObject *string}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001755Resturns a \NULL{} terminated representation of the contents of \var{string}.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001756\end{cfuncdesc}
1757
1758\begin{cfuncdesc}{void}{PyString_Concat}{PyObject **string,
1759 PyObject *newpart}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001760Creates a new string object in \var{*string} containing the contents
1761of \var{newpart} appended to \var{string}.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001762\end{cfuncdesc}
1763
1764\begin{cfuncdesc}{void}{PyString_ConcatAndDel}{PyObject **string,
1765 PyObject *newpart}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001766Creates a new string object in \var{*string} containing the contents
Guido van Rossum44475131998-04-21 15:30:01 +00001767of \var{newpart} appended to \var{string}. This version decrements
1768the reference count of \var{newpart}.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001769\end{cfuncdesc}
1770
1771\begin{cfuncdesc}{int}{_PyString_Resize}{PyObject **string, int newsize}
Guido van Rossum44475131998-04-21 15:30:01 +00001772A way to resize a string object even though it is ``immutable''.
1773Only use this to build up a brand new string object; don't use this if
1774the string may already be known in other parts of the code.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001775\end{cfuncdesc}
1776
1777\begin{cfuncdesc}{PyObject*}{PyString_Format}{PyObject *format,
1778 PyObject *args}
Guido van Rossum44475131998-04-21 15:30:01 +00001779Returns a new string object from \var{format} and \var{args}. Analogous
1780to \code{\var{format} \% \var{args}}. The \var{args} argument must be
1781a tuple.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001782\end{cfuncdesc}
1783
1784\begin{cfuncdesc}{void}{PyString_InternInPlace}{PyObject **string}
Guido van Rossum44475131998-04-21 15:30:01 +00001785Intern the argument \var{*string} in place. The argument must be the
1786address of a pointer variable pointing to a Python string object.
1787If there is an existing interned string that is the same as
1788\var{*string}, it sets \var{*string} to it (decrementing the reference
1789count of the old string object and incrementing the reference count of
1790the interned string object), otherwise it leaves \var{*string} alone
1791and interns it (incrementing its reference count). (Clarification:
1792even though there is a lot of talk about reference counts, think of
Fred Drakef8830d11998-04-23 14:06:01 +00001793this function as reference-count-neutral; you own the object after
1794the call if and only if you owned it before the call.)
Fred Drakec6fa34e1998-04-02 06:47:24 +00001795\end{cfuncdesc}
1796
1797\begin{cfuncdesc}{PyObject*}{PyString_InternFromString}{const char *v}
Fred Drakef8830d11998-04-23 14:06:01 +00001798A combination of \cfunction{PyString_FromString()} and
1799\cfunction{PyString_InternInPlace()}, returning either a new string object
Guido van Rossum44475131998-04-21 15:30:01 +00001800that has been interned, or a new (``owned'') reference to an earlier
1801interned string object with the same value.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001802\end{cfuncdesc}
1803
1804\begin{cfuncdesc}{char*}{PyString_AS_STRING}{PyObject *string}
Fred Drakef8830d11998-04-23 14:06:01 +00001805Macro form of \cfunction{PyString_AsString()} but without error checking.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001806\end{cfuncdesc}
1807
Fred Drakec6fa34e1998-04-02 06:47:24 +00001808\begin{cfuncdesc}{int}{PyString_GET_SIZE}{PyObject *string}
Fred Drakef8830d11998-04-23 14:06:01 +00001809Macro form of \cfunction{PyString_GetSize()} but without error checking.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001810\end{cfuncdesc}
1811
1812
Guido van Rossum44475131998-04-21 15:30:01 +00001813
Fred Drakee5bf8b21998-02-12 21:22:28 +00001814\subsection{Tuple Objects}
Fred Drakef39ed671998-02-26 22:01:23 +00001815\label{tupleObjects}
Fred Drakee5bf8b21998-02-12 21:22:28 +00001816
1817\begin{ctypedesc}{PyTupleObject}
Fred Drakef8830d11998-04-23 14:06:01 +00001818This subtype of \ctype{PyObject} represents a Python tuple object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001819\end{ctypedesc}
1820
1821\begin{cvardesc}{PyTypeObject}{PyTuple_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00001822This instance of \ctype{PyTypeObject} represents the Python tuple type.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001823\end{cvardesc}
1824
1825\begin{cfuncdesc}{int}{PyTuple_Check}{PyObject *p}
1826Return true if the argument is a tuple object.
1827\end{cfuncdesc}
1828
Fred Drakec6fa34e1998-04-02 06:47:24 +00001829\begin{cfuncdesc}{PyObject*}{PyTuple_New}{int s}
Fred Drakee058b4f1998-02-16 06:15:35 +00001830Return a new tuple object of size \var{s}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001831\end{cfuncdesc}
1832
1833\begin{cfuncdesc}{int}{PyTuple_Size}{PyTupleObject *p}
Fred Drakee058b4f1998-02-16 06:15:35 +00001834Takes a pointer to a tuple object, and returns the size
Fred Drakee5bf8b21998-02-12 21:22:28 +00001835of that tuple.
1836\end{cfuncdesc}
1837
Fred Drakec6fa34e1998-04-02 06:47:24 +00001838\begin{cfuncdesc}{PyObject*}{PyTuple_GetItem}{PyTupleObject *p, int pos}
Fred Drakee058b4f1998-02-16 06:15:35 +00001839Returns the object at position \var{pos} in the tuple pointed
1840to by \var{p}. If \var{pos} is out of bounds, returns \NULL{} and
Fred Drakef8830d11998-04-23 14:06:01 +00001841sets an \exception{IndexError} exception. \strong{Note:} this
1842function returns a ``borrowed'' reference.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001843\end{cfuncdesc}
1844
Fred Drakec6fa34e1998-04-02 06:47:24 +00001845\begin{cfuncdesc}{PyObject*}{PyTuple_GET_ITEM}{PyTupleObject *p, int pos}
Fred Drakee058b4f1998-02-16 06:15:35 +00001846Does the same, but does no checking of its arguments.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001847\end{cfuncdesc}
1848
Fred Drakec6fa34e1998-04-02 06:47:24 +00001849\begin{cfuncdesc}{PyObject*}{PyTuple_GetSlice}{PyTupleObject *p,
Fred Drakee5bf8b21998-02-12 21:22:28 +00001850 int low,
1851 int high}
Fred Drakee058b4f1998-02-16 06:15:35 +00001852Takes a slice of the tuple pointed to by \var{p} from
1853\var{low} to \var{high} and returns it as a new tuple.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001854\end{cfuncdesc}
1855
1856\begin{cfuncdesc}{int}{PyTuple_SetItem}{PyTupleObject *p,
1857 int pos,
1858 PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001859Inserts a reference to object \var{o} at position \var{pos} of
1860the tuple pointed to by \var{p}. It returns \code{0} on success.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001861\end{cfuncdesc}
1862
1863\begin{cfuncdesc}{void}{PyTuple_SET_ITEM}{PyTupleObject *p,
1864 int pos,
1865 PyObject *o}
1866
Fred Drakee058b4f1998-02-16 06:15:35 +00001867Does the same, but does no error checking, and
Fred Drakee5bf8b21998-02-12 21:22:28 +00001868should \emph{only} be used to fill in brand new tuples.
1869\end{cfuncdesc}
1870
Fred Drakec6fa34e1998-04-02 06:47:24 +00001871\begin{cfuncdesc}{int}{_PyTuple_Resize}{PyTupleObject *p,
Fred Drakee5bf8b21998-02-12 21:22:28 +00001872 int new,
1873 int last_is_sticky}
Fred Drakee058b4f1998-02-16 06:15:35 +00001874Can be used to resize a tuple. Because tuples are
Fred Drakee5bf8b21998-02-12 21:22:28 +00001875\emph{supposed} to be immutable, this should only be used if there is only
1876one module referencing the object. Do \emph{not} use this if the tuple may
Fred Drakee058b4f1998-02-16 06:15:35 +00001877already be known to some other part of the code. \var{last_is_sticky} is
1878a flag --- if set, the tuple will grow or shrink at the front, otherwise
Fred Drakee5bf8b21998-02-12 21:22:28 +00001879it will grow or shrink at the end. Think of this as destroying the old
1880tuple and creating a new one, only more efficiently.
1881\end{cfuncdesc}
1882
1883
1884\subsection{List Objects}
Fred Drakef39ed671998-02-26 22:01:23 +00001885\label{listObjects}
Fred Drakee5bf8b21998-02-12 21:22:28 +00001886
1887\begin{ctypedesc}{PyListObject}
Fred Drakef8830d11998-04-23 14:06:01 +00001888This subtype of \ctype{PyObject} represents a Python list object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001889\end{ctypedesc}
1890
1891\begin{cvardesc}{PyTypeObject}{PyList_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00001892This instance of \ctype{PyTypeObject} represents the Python list type.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001893\end{cvardesc}
1894
1895\begin{cfuncdesc}{int}{PyList_Check}{PyObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00001896Returns true if its argument is a \ctype{PyListObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001897\end{cfuncdesc}
1898
Fred Drakec6fa34e1998-04-02 06:47:24 +00001899\begin{cfuncdesc}{PyObject*}{PyList_New}{int size}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001900Returns a new list of length \var{len} on success, and \NULL{} on
1901failure.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001902\end{cfuncdesc}
1903
Fred Drakec6fa34e1998-04-02 06:47:24 +00001904\begin{cfuncdesc}{int}{PyList_Size}{PyObject *list}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001905Returns the length of the list object in \var{list}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001906\end{cfuncdesc}
1907
Fred Drakec6fa34e1998-04-02 06:47:24 +00001908\begin{cfuncdesc}{PyObject*}{PyList_GetItem}{PyObject *list, int index}
Guido van Rossum44475131998-04-21 15:30:01 +00001909Returns the object at position \var{pos} in the list pointed
1910to by \var{p}. If \var{pos} is out of bounds, returns \NULL{} and
Fred Drakef8830d11998-04-23 14:06:01 +00001911sets an \exception{IndexError} exception. \strong{Note:} this
1912function returns a ``borrowed'' reference.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001913\end{cfuncdesc}
1914
Fred Drakec6fa34e1998-04-02 06:47:24 +00001915\begin{cfuncdesc}{int}{PyList_SetItem}{PyObject *list, int index,
1916 PyObject *item}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001917Sets the item at index \var{index} in list to \var{item}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001918\end{cfuncdesc}
1919
Fred Drakec6fa34e1998-04-02 06:47:24 +00001920\begin{cfuncdesc}{int}{PyList_Insert}{PyObject *list, int index,
Guido van Rossum44475131998-04-21 15:30:01 +00001921 PyObject *item}
1922Inserts the item \var{item} into list \var{list} in front of index
1923\var{index}. Returns 0 if successful; returns -1 and sets an
1924exception if unsuccessful. Analogous to \code{list.insert(index, item)}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001925\end{cfuncdesc}
1926
Fred Drakec6fa34e1998-04-02 06:47:24 +00001927\begin{cfuncdesc}{int}{PyList_Append}{PyObject *list, PyObject *item}
Guido van Rossum44475131998-04-21 15:30:01 +00001928Appends the object \var{item} at the end of list \var{list}. Returns
19290 if successful; returns -1 and sets an exception if unsuccessful.
1930Analogous to \code{list.append(item)}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001931\end{cfuncdesc}
1932
Fred Drakec6fa34e1998-04-02 06:47:24 +00001933\begin{cfuncdesc}{PyObject*}{PyList_GetSlice}{PyObject *list,
1934 int low, int high}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001935Returns a list of the objects in \var{list} containing the objects
Guido van Rossum44475131998-04-21 15:30:01 +00001936\emph{between} \var{low} and \var{high}. Returns NULL and sets an
1937exception if unsuccessful.
1938Analogous to \code{list[low:high]}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001939\end{cfuncdesc}
1940
Fred Drakec6fa34e1998-04-02 06:47:24 +00001941\begin{cfuncdesc}{int}{PyList_SetSlice}{PyObject *list,
1942 int low, int high,
1943 PyObject *itemlist}
Guido van Rossum44475131998-04-21 15:30:01 +00001944Sets the slice of \var{list} between \var{low} and \var{high} to the contents
1945of \var{itemlist}. Analogous to \code{list[low:high]=itemlist}. Returns 0
1946on success, -1 on failure.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001947\end{cfuncdesc}
1948
Fred Drakec6fa34e1998-04-02 06:47:24 +00001949\begin{cfuncdesc}{int}{PyList_Sort}{PyObject *list}
Guido van Rossum44475131998-04-21 15:30:01 +00001950Sorts the items of \var{list} in place. Returns 0 on success, -1 on failure.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001951\end{cfuncdesc}
1952
Fred Drakec6fa34e1998-04-02 06:47:24 +00001953\begin{cfuncdesc}{int}{PyList_Reverse}{PyObject *list}
Guido van Rossum44475131998-04-21 15:30:01 +00001954Reverses the items of \var{list} in place. Returns 0 on success, -1 on failure.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001955\end{cfuncdesc}
1956
Fred Drakec6fa34e1998-04-02 06:47:24 +00001957\begin{cfuncdesc}{PyObject*}{PyList_AsTuple}{PyObject *list}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001958Returns a new tuple object containing the contents of \var{list}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001959\end{cfuncdesc}
1960
Fred Drakec6fa34e1998-04-02 06:47:24 +00001961\begin{cfuncdesc}{PyObject*}{PyList_GET_ITEM}{PyObject *list, int i}
Fred Drakef8830d11998-04-23 14:06:01 +00001962Macro form of \cfunction{PyList_GetItem()} without error checking.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001963\end{cfuncdesc}
1964
Guido van Rossuma937d141998-04-24 18:22:02 +00001965\begin{cfuncdesc}{PyObject*}{PyList_SET_ITEM}{PyObject *list, int i,
1966 PyObject *o}
1967Macro form of \cfunction{PyList_SetItem()} without error checking.
1968\end{cfuncdesc}
1969
Fred Drakee5bf8b21998-02-12 21:22:28 +00001970\begin{cfuncdesc}{int}{PyList_GET_SIZE}{PyObject *list}
Fred Drakef8830d11998-04-23 14:06:01 +00001971Macro form of \cfunction{PyList_GetSize()} without error checking.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001972\end{cfuncdesc}
1973
1974
1975\section{Mapping Objects}
Fred Drakef39ed671998-02-26 22:01:23 +00001976\label{mapObjects}
Fred Drakee5bf8b21998-02-12 21:22:28 +00001977
1978\subsection{Dictionary Objects}
Fred Drakef39ed671998-02-26 22:01:23 +00001979\label{dictObjects}
Fred Drakee5bf8b21998-02-12 21:22:28 +00001980
1981\begin{ctypedesc}{PyDictObject}
Fred Drakef8830d11998-04-23 14:06:01 +00001982This subtype of \ctype{PyObject} represents a Python dictionary object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001983\end{ctypedesc}
1984
1985\begin{cvardesc}{PyTypeObject}{PyDict_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00001986This instance of \ctype{PyTypeObject} represents the Python dictionary type.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001987\end{cvardesc}
1988
1989\begin{cfuncdesc}{int}{PyDict_Check}{PyObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00001990Returns true if its argument is a \ctype{PyDictObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001991\end{cfuncdesc}
1992
Fred Drakec6fa34e1998-04-02 06:47:24 +00001993\begin{cfuncdesc}{PyObject*}{PyDict_New}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00001994Returns a new empty dictionary.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001995\end{cfuncdesc}
1996
1997\begin{cfuncdesc}{void}{PyDict_Clear}{PyDictObject *p}
Fred Drakee058b4f1998-02-16 06:15:35 +00001998Empties an existing dictionary of all key/value pairs.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001999\end{cfuncdesc}
2000
2001\begin{cfuncdesc}{int}{PyDict_SetItem}{PyDictObject *p,
2002 PyObject *key,
2003 PyObject *val}
Fred Drakee058b4f1998-02-16 06:15:35 +00002004Inserts \var{value} into the dictionary with a key of \var{key}. Both
2005\var{key} and \var{value} should be PyObjects, and \var{key} should be
2006hashable.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002007\end{cfuncdesc}
2008
2009\begin{cfuncdesc}{int}{PyDict_SetItemString}{PyDictObject *p,
2010 char *key,
2011 PyObject *val}
Fred Drakee058b4f1998-02-16 06:15:35 +00002012Inserts \var{value} into the dictionary using \var{key}
Fred Drakef8830d11998-04-23 14:06:01 +00002013as a key. \var{key} should be a \ctype{char *}. The key object is
Fred Drakee058b4f1998-02-16 06:15:35 +00002014created using \code{PyString_FromString(\var{key})}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002015\end{cfuncdesc}
2016
2017\begin{cfuncdesc}{int}{PyDict_DelItem}{PyDictObject *p, PyObject *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00002018Removes the entry in dictionary \var{p} with key \var{key}.
2019\var{key} is a PyObject.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002020\end{cfuncdesc}
2021
2022\begin{cfuncdesc}{int}{PyDict_DelItemString}{PyDictObject *p, char *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00002023Removes the entry in dictionary \var{p} which has a key
Fred Drakef8830d11998-04-23 14:06:01 +00002024specified by the \ctype{char *}\var{key}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002025\end{cfuncdesc}
2026
Fred Drakec6fa34e1998-04-02 06:47:24 +00002027\begin{cfuncdesc}{PyObject*}{PyDict_GetItem}{PyDictObject *p, PyObject *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00002028Returns the object from dictionary \var{p} which has a key
Guido van Rossum44475131998-04-21 15:30:01 +00002029\var{key}. Returns \NULL{} if the key \var{key} is not present, but
Fred Drakef8830d11998-04-23 14:06:01 +00002030without (!) setting an exception. \strong{Note:} this function
2031returns a ``borrowed'' reference.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002032\end{cfuncdesc}
2033
Fred Drakec6fa34e1998-04-02 06:47:24 +00002034\begin{cfuncdesc}{PyObject*}{PyDict_GetItemString}{PyDictObject *p, char *key}
Fred Drakef8830d11998-04-23 14:06:01 +00002035This is the same as \cfunction{PyDict_GetItem()}, but \var{key} is
2036specified as a \ctype{char *}, rather than a \ctype{PyObject *}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002037\end{cfuncdesc}
2038
Fred Drakec6fa34e1998-04-02 06:47:24 +00002039\begin{cfuncdesc}{PyObject*}{PyDict_Items}{PyDictObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002040Returns a \ctype{PyListObject} containing all the items
Guido van Rossum44475131998-04-21 15:30:01 +00002041from the dictionary, as in the dictinoary method \method{items()} (see
Fred Drakee058b4f1998-02-16 06:15:35 +00002042the \emph{Python Library Reference}).
Fred Drakee5bf8b21998-02-12 21:22:28 +00002043\end{cfuncdesc}
2044
Fred Drakec6fa34e1998-04-02 06:47:24 +00002045\begin{cfuncdesc}{PyObject*}{PyDict_Keys}{PyDictObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002046Returns a \ctype{PyListObject} containing all the keys
Guido van Rossum44475131998-04-21 15:30:01 +00002047from the dictionary, as in the dictionary method \method{keys()} (see the
Fred Drakee058b4f1998-02-16 06:15:35 +00002048\emph{Python Library Reference}).
Fred Drakee5bf8b21998-02-12 21:22:28 +00002049\end{cfuncdesc}
2050
Fred Drakec6fa34e1998-04-02 06:47:24 +00002051\begin{cfuncdesc}{PyObject*}{PyDict_Values}{PyDictObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002052Returns a \ctype{PyListObject} containing all the values
Guido van Rossum44475131998-04-21 15:30:01 +00002053from the dictionary \var{p}, as in the dictionary method
Fred Drakee058b4f1998-02-16 06:15:35 +00002054\method{values()} (see the \emph{Python Library Reference}).
Fred Drakee5bf8b21998-02-12 21:22:28 +00002055\end{cfuncdesc}
2056
2057\begin{cfuncdesc}{int}{PyDict_Size}{PyDictObject *p}
Fred Drakee058b4f1998-02-16 06:15:35 +00002058Returns the number of items in the dictionary.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002059\end{cfuncdesc}
2060
2061\begin{cfuncdesc}{int}{PyDict_Next}{PyDictObject *p,
2062 int ppos,
2063 PyObject **pkey,
2064 PyObject **pvalue}
2065
2066\end{cfuncdesc}
2067
2068
2069\section{Numeric Objects}
Fred Drakef39ed671998-02-26 22:01:23 +00002070\label{numericObjects}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002071
2072\subsection{Plain Integer Objects}
Fred Drakef39ed671998-02-26 22:01:23 +00002073\label{intObjects}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002074
2075\begin{ctypedesc}{PyIntObject}
Fred Drakef8830d11998-04-23 14:06:01 +00002076This subtype of \ctype{PyObject} represents a Python integer object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002077\end{ctypedesc}
2078
2079\begin{cvardesc}{PyTypeObject}{PyInt_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00002080This instance of \ctype{PyTypeObject} represents the Python plain
Fred Drakee5bf8b21998-02-12 21:22:28 +00002081integer type.
2082\end{cvardesc}
2083
2084\begin{cfuncdesc}{int}{PyInt_Check}{PyObject *}
2085
2086\end{cfuncdesc}
2087
Fred Drakec6fa34e1998-04-02 06:47:24 +00002088\begin{cfuncdesc}{PyObject*}{PyInt_FromLong}{long ival}
Fred Drakee058b4f1998-02-16 06:15:35 +00002089Creates a new integer object with a value of \var{ival}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002090
2091The current implementation keeps an array of integer objects for all
Fred Drakee058b4f1998-02-16 06:15:35 +00002092integers between \code{-1} and \code{100}, when you create an int in
2093that range you actually just get back a reference to the existing
2094object. So it should be possible to change the value of \code{1}. I
Fred Drake7e9d3141998-04-03 05:02:28 +00002095suspect the behaviour of Python in this case is undefined. :-)
Fred Drakee5bf8b21998-02-12 21:22:28 +00002096\end{cfuncdesc}
2097
2098\begin{cfuncdesc}{long}{PyInt_AS_LONG}{PyIntObject *io}
Fred Drakee058b4f1998-02-16 06:15:35 +00002099Returns the value of the object \var{io}. No error checking is
2100performed.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002101\end{cfuncdesc}
2102
2103\begin{cfuncdesc}{long}{PyInt_AsLong}{PyObject *io}
Fred Drakef8830d11998-04-23 14:06:01 +00002104Will first attempt to cast the object to a \ctype{PyIntObject}, if
Fred Drakee058b4f1998-02-16 06:15:35 +00002105it is not already one, and then return its value.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002106\end{cfuncdesc}
2107
2108\begin{cfuncdesc}{long}{PyInt_GetMax}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00002109Returns the systems idea of the largest integer it can handle
2110(\constant{LONG_MAX}, as defined in the system header files).
Fred Drakee5bf8b21998-02-12 21:22:28 +00002111\end{cfuncdesc}
2112
2113
2114\subsection{Long Integer Objects}
Fred Drakef39ed671998-02-26 22:01:23 +00002115\label{longObjects}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002116
2117\begin{ctypedesc}{PyLongObject}
Fred Drakef8830d11998-04-23 14:06:01 +00002118This subtype of \ctype{PyObject} represents a Python long integer
Fred Drakee058b4f1998-02-16 06:15:35 +00002119object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002120\end{ctypedesc}
2121
2122\begin{cvardesc}{PyTypeObject}{PyLong_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00002123This instance of \ctype{PyTypeObject} represents the Python long
Fred Drakee058b4f1998-02-16 06:15:35 +00002124integer type.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002125\end{cvardesc}
2126
2127\begin{cfuncdesc}{int}{PyLong_Check}{PyObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002128Returns true if its argument is a \ctype{PyLongObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002129\end{cfuncdesc}
2130
Fred Drakec6fa34e1998-04-02 06:47:24 +00002131\begin{cfuncdesc}{PyObject*}{PyLong_FromLong}{long v}
Fred Drakef8830d11998-04-23 14:06:01 +00002132Returns a new \ctype{PyLongObject} object from \var{v}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002133\end{cfuncdesc}
2134
Fred Drakec6fa34e1998-04-02 06:47:24 +00002135\begin{cfuncdesc}{PyObject*}{PyLong_FromUnsignedLong}{unsigned long v}
Fred Drakef8830d11998-04-23 14:06:01 +00002136Returns a new \ctype{PyLongObject} object from an unsigned \C{} long.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002137\end{cfuncdesc}
2138
Fred Drakec6fa34e1998-04-02 06:47:24 +00002139\begin{cfuncdesc}{PyObject*}{PyLong_FromDouble}{double v}
Fred Drakef8830d11998-04-23 14:06:01 +00002140Returns a new \ctype{PyLongObject} object from the integer part of \var{v}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002141\end{cfuncdesc}
2142
Fred Drakec6fa34e1998-04-02 06:47:24 +00002143\begin{cfuncdesc}{long}{PyLong_AsLong}{PyObject *pylong}
Fred Drakef8830d11998-04-23 14:06:01 +00002144Returns a \C{} \ctype{long} representation of the contents of \var{pylong}.
2145WHAT HAPPENS IF \var{pylong} is greater than \constant{LONG_MAX}?
Fred Drakee5bf8b21998-02-12 21:22:28 +00002146\end{cfuncdesc}
2147
Fred Drakec6fa34e1998-04-02 06:47:24 +00002148\begin{cfuncdesc}{unsigned long}{PyLong_AsUnsignedLong}{PyObject *pylong}
Fred Drakef8830d11998-04-23 14:06:01 +00002149Returns a \C{} \ctype{unsigned long} representation of the contents of
2150\var{pylong}. WHAT HAPPENS IF \var{pylong} is greater than
2151\constant{ULONG_MAX}?
Fred Drakee5bf8b21998-02-12 21:22:28 +00002152\end{cfuncdesc}
2153
Fred Drakec6fa34e1998-04-02 06:47:24 +00002154\begin{cfuncdesc}{double}{PyLong_AsDouble}{PyObject *pylong}
Fred Drakef8830d11998-04-23 14:06:01 +00002155Returns a \C{} \ctype{double} representation of the contents of \var{pylong}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002156\end{cfuncdesc}
2157
Fred Drakec6fa34e1998-04-02 06:47:24 +00002158\begin{cfuncdesc}{PyObject*}{PyLong_FromString}{char *str, char **pend,
2159 int base}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002160\end{cfuncdesc}
2161
2162
2163\subsection{Floating Point Objects}
Fred Drakef39ed671998-02-26 22:01:23 +00002164\label{floatObjects}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002165
2166\begin{ctypedesc}{PyFloatObject}
Fred Drakef8830d11998-04-23 14:06:01 +00002167This subtype of \ctype{PyObject} represents a Python floating point
Fred Drakee058b4f1998-02-16 06:15:35 +00002168object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002169\end{ctypedesc}
2170
2171\begin{cvardesc}{PyTypeObject}{PyFloat_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00002172This instance of \ctype{PyTypeObject} represents the Python floating
Fred Drakee5bf8b21998-02-12 21:22:28 +00002173point type.
2174\end{cvardesc}
2175
2176\begin{cfuncdesc}{int}{PyFloat_Check}{PyObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002177Returns true if its argument is a \ctype{PyFloatObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002178\end{cfuncdesc}
2179
Fred Drakec6fa34e1998-04-02 06:47:24 +00002180\begin{cfuncdesc}{PyObject*}{PyFloat_FromDouble}{double v}
Fred Drakef8830d11998-04-23 14:06:01 +00002181Creates a \ctype{PyFloatObject} object from \var{v}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002182\end{cfuncdesc}
2183
Fred Drakec6fa34e1998-04-02 06:47:24 +00002184\begin{cfuncdesc}{double}{PyFloat_AsDouble}{PyObject *pyfloat}
Fred Drakef8830d11998-04-23 14:06:01 +00002185Returns a \C{} \ctype{double} representation of the contents of \var{pyfloat}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002186\end{cfuncdesc}
2187
Fred Drakec6fa34e1998-04-02 06:47:24 +00002188\begin{cfuncdesc}{double}{PyFloat_AS_DOUBLE}{PyObject *pyfloat}
Fred Drakef8830d11998-04-23 14:06:01 +00002189Returns a \C{} \ctype{double} representation of the contents of
2190\var{pyfloat}, but without error checking.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002191\end{cfuncdesc}
2192
2193
2194\subsection{Complex Number Objects}
Fred Drakef39ed671998-02-26 22:01:23 +00002195\label{complexObjects}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002196
2197\begin{ctypedesc}{Py_complex}
Fred Drake4de05a91998-02-16 14:25:26 +00002198The \C{} structure which corresponds to the value portion of a Python
2199complex number object. Most of the functions for dealing with complex
2200number objects use structures of this type as input or output values,
2201as appropriate. It is defined as:
2202
Fred Drakee058b4f1998-02-16 06:15:35 +00002203\begin{verbatim}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002204typedef struct {
2205 double real;
2206 double imag;
Fred Drake4de05a91998-02-16 14:25:26 +00002207} Py_complex;
Fred Drakee058b4f1998-02-16 06:15:35 +00002208\end{verbatim}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002209\end{ctypedesc}
2210
2211\begin{ctypedesc}{PyComplexObject}
Fred Drakef8830d11998-04-23 14:06:01 +00002212This subtype of \ctype{PyObject} represents a Python complex number object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002213\end{ctypedesc}
2214
2215\begin{cvardesc}{PyTypeObject}{PyComplex_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00002216This instance of \ctype{PyTypeObject} represents the Python complex
Fred Drakee5bf8b21998-02-12 21:22:28 +00002217number type.
2218\end{cvardesc}
2219
2220\begin{cfuncdesc}{int}{PyComplex_Check}{PyObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002221Returns true if its argument is a \ctype{PyComplexObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002222\end{cfuncdesc}
2223
Fred Drakec6fa34e1998-04-02 06:47:24 +00002224\begin{cfuncdesc}{Py_complex}{_Py_c_sum}{Py_complex left, Py_complex right}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002225\end{cfuncdesc}
2226
Fred Drakec6fa34e1998-04-02 06:47:24 +00002227\begin{cfuncdesc}{Py_complex}{_Py_c_diff}{Py_complex left, Py_complex right}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002228\end{cfuncdesc}
2229
Fred Drakec6fa34e1998-04-02 06:47:24 +00002230\begin{cfuncdesc}{Py_complex}{_Py_c_neg}{Py_complex complex}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002231\end{cfuncdesc}
2232
Fred Drakec6fa34e1998-04-02 06:47:24 +00002233\begin{cfuncdesc}{Py_complex}{_Py_c_prod}{Py_complex left, Py_complex right}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002234\end{cfuncdesc}
2235
Fred Drakec6fa34e1998-04-02 06:47:24 +00002236\begin{cfuncdesc}{Py_complex}{_Py_c_quot}{Py_complex dividend,
2237 Py_complex divisor}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002238\end{cfuncdesc}
2239
Fred Drakec6fa34e1998-04-02 06:47:24 +00002240\begin{cfuncdesc}{Py_complex}{_Py_c_pow}{Py_complex num, Py_complex exp}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002241\end{cfuncdesc}
2242
Fred Drakec6fa34e1998-04-02 06:47:24 +00002243\begin{cfuncdesc}{PyObject*}{PyComplex_FromCComplex}{Py_complex v}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002244\end{cfuncdesc}
2245
Fred Drakec6fa34e1998-04-02 06:47:24 +00002246\begin{cfuncdesc}{PyObject*}{PyComplex_FromDoubles}{double real, double imag}
Fred Drakef8830d11998-04-23 14:06:01 +00002247Returns a new \ctype{PyComplexObject} object from \var{real} and \var{imag}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002248\end{cfuncdesc}
2249
2250\begin{cfuncdesc}{double}{PyComplex_RealAsDouble}{PyObject *op}
Fred Drakef8830d11998-04-23 14:06:01 +00002251Returns the real part of \var{op} as a \C{} \ctype{double}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002252\end{cfuncdesc}
2253
2254\begin{cfuncdesc}{double}{PyComplex_ImagAsDouble}{PyObject *op}
Fred Drakef8830d11998-04-23 14:06:01 +00002255Returns the imaginary part of \var{op} as a \C{} \ctype{double}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002256\end{cfuncdesc}
2257
2258\begin{cfuncdesc}{Py_complex}{PyComplex_AsCComplex}{PyObject *op}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002259\end{cfuncdesc}
2260
2261
2262
2263\section{Other Objects}
Fred Drakef39ed671998-02-26 22:01:23 +00002264\label{otherObjects}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002265
2266\subsection{File Objects}
Fred Drakef39ed671998-02-26 22:01:23 +00002267\label{fileObjects}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002268
2269\begin{ctypedesc}{PyFileObject}
Fred Drakef8830d11998-04-23 14:06:01 +00002270This subtype of \ctype{PyObject} represents a Python file object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002271\end{ctypedesc}
2272
2273\begin{cvardesc}{PyTypeObject}{PyFile_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00002274This instance of \ctype{PyTypeObject} represents the Python file type.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002275\end{cvardesc}
2276
2277\begin{cfuncdesc}{int}{PyFile_Check}{PyObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002278Returns true if its argument is a \ctype{PyFileObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002279\end{cfuncdesc}
2280
Fred Drakec6fa34e1998-04-02 06:47:24 +00002281\begin{cfuncdesc}{PyObject*}{PyFile_FromString}{char *name, char *mode}
Fred Drakef8830d11998-04-23 14:06:01 +00002282Creates a new \ctype{PyFileObject} pointing to the file
Fred Drakee058b4f1998-02-16 06:15:35 +00002283specified in \var{name} with the mode specified in \var{mode}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002284\end{cfuncdesc}
2285
Fred Drakec6fa34e1998-04-02 06:47:24 +00002286\begin{cfuncdesc}{PyObject*}{PyFile_FromFile}{FILE *fp,
Fred Drakeb92dce31998-02-25 15:40:22 +00002287 char *name, char *mode, int (*close)}
Fred Drakef8830d11998-04-23 14:06:01 +00002288Creates a new \ctype{PyFileObject} from the already-open \var{fp}.
Fred Drakee058b4f1998-02-16 06:15:35 +00002289The function \var{close} will be called when the file should be
2290closed.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002291\end{cfuncdesc}
2292
2293\begin{cfuncdesc}{FILE *}{PyFile_AsFile}{PyFileObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002294Returns the file object associated with \var{p} as a \ctype{FILE *}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002295\end{cfuncdesc}
2296
Fred Drakec6fa34e1998-04-02 06:47:24 +00002297\begin{cfuncdesc}{PyObject*}{PyFile_GetLine}{PyObject *p, int n}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002298undocumented as yet
2299\end{cfuncdesc}
2300
Fred Drakec6fa34e1998-04-02 06:47:24 +00002301\begin{cfuncdesc}{PyObject*}{PyFile_Name}{PyObject *p}
Fred Drakee058b4f1998-02-16 06:15:35 +00002302Returns the name of the file specified by \var{p} as a
Fred Drakef8830d11998-04-23 14:06:01 +00002303\ctype{PyStringObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002304\end{cfuncdesc}
2305
2306\begin{cfuncdesc}{void}{PyFile_SetBufSize}{PyFileObject *p, int n}
Fred Drakee058b4f1998-02-16 06:15:35 +00002307Available on systems with \cfunction{setvbuf()} only. This should
2308only be called immediately after file object creation.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002309\end{cfuncdesc}
2310
2311\begin{cfuncdesc}{int}{PyFile_SoftSpace}{PyFileObject *p, int newflag}
Fred Drakef8830d11998-04-23 14:06:01 +00002312Sets the \member{softspace} attribute of \var{p} to \var{newflag}.
Fred Drakec6fa34e1998-04-02 06:47:24 +00002313Returns the previous value. This function clears any errors, and will
Fred Drakee058b4f1998-02-16 06:15:35 +00002314return \code{0} as the previous value if the attribute either does not
2315exist or if there were errors in retrieving it. There is no way to
2316detect errors from this function, but doing so should not be needed.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002317\end{cfuncdesc}
2318
Fred Drakec6fa34e1998-04-02 06:47:24 +00002319\begin{cfuncdesc}{int}{PyFile_WriteObject}{PyObject *obj, PyFileObject *p,
2320 int flags}
Fred Drakee058b4f1998-02-16 06:15:35 +00002321Writes object \var{obj} to file object \var{p}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002322\end{cfuncdesc}
2323
Fred Drakec6fa34e1998-04-02 06:47:24 +00002324\begin{cfuncdesc}{int}{PyFile_WriteString}{char *s, PyFileObject *p,
2325 int flags}
Fred Drakee058b4f1998-02-16 06:15:35 +00002326Writes string \var{s} to file object \var{p}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002327\end{cfuncdesc}
2328
2329
2330\subsection{CObjects}
Fred Drakef39ed671998-02-26 22:01:23 +00002331\label{cObjects}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002332
Guido van Rossum44475131998-04-21 15:30:01 +00002333\begin{ctypedesc}{PyCObject}
Fred Drakef8830d11998-04-23 14:06:01 +00002334This subtype of \ctype{PyObject} represents an opaque value, useful for
Guido van Rossum44475131998-04-21 15:30:01 +00002335\C{} extension modules who need to pass an opaque value (as a
Fred Drakef8830d11998-04-23 14:06:01 +00002336\ctype{void *} pointer) through Python code to other \C{} code. It is
Guido van Rossum44475131998-04-21 15:30:01 +00002337often used to make a C function pointer defined in one module
2338available to other modules, so the regular import mechanism can be
2339used to access C APIs defined in dynamically loaded modules.
2340\end{ctypedesc}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002341
Guido van Rossum44475131998-04-21 15:30:01 +00002342\begin{cfuncdesc}{PyObject *}{PyCObject_FromVoidPtr}{void* cobj,
2343 void (*destr)(void *)}
Fred Drakef8830d11998-04-23 14:06:01 +00002344Creates a \ctype{PyCObject} from the \code{void *} \var{cobj}. The
2345\var{destr} function will be called when the object is reclaimed.
Guido van Rossum44475131998-04-21 15:30:01 +00002346\end{cfuncdesc}
2347
2348\begin{cfuncdesc}{PyObject *}{PyCObject_FromVoidPtrAndDesc}{void* cobj,
2349 void* desc, void (*destr)(void *, void *) }
Fred Drakef8830d11998-04-23 14:06:01 +00002350Creates a \ctype{PyCObject} from the \ctype{void *}\var{cobj}. The
2351\var{destr} function will be called when the object is reclaimed. The
2352\var{desc} argument can be used to pass extra callback data for the
2353destructor function.
Guido van Rossum44475131998-04-21 15:30:01 +00002354\end{cfuncdesc}
2355
2356\begin{cfuncdesc}{void *}{PyCObject_AsVoidPtr}{PyObject* self}
Fred Drakef8830d11998-04-23 14:06:01 +00002357Returns the object \ctype{void *} that the \ctype{PyCObject} \var{self}
Guido van Rossum44475131998-04-21 15:30:01 +00002358was created with.
2359\end{cfuncdesc}
2360
2361\begin{cfuncdesc}{void *}{PyCObject_GetDesc}{PyObject* self}
Fred Drakef8830d11998-04-23 14:06:01 +00002362Returns the description \ctype{void *} that the \ctype{PyCObject}
Guido van Rossum44475131998-04-21 15:30:01 +00002363\var{self} was created with.
2364\end{cfuncdesc}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002365
Guido van Rossum4a944d71997-08-14 20:35:38 +00002366\chapter{Initialization, Finalization, and Threads}
Fred Drakef39ed671998-02-26 22:01:23 +00002367\label{initialization}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002368
Guido van Rossum4a944d71997-08-14 20:35:38 +00002369\begin{cfuncdesc}{void}{Py_Initialize}{}
2370Initialize the Python interpreter. In an application embedding
2371Python, this should be called before using any other Python/C API
Fred Drakee058b4f1998-02-16 06:15:35 +00002372functions; with the exception of \cfunction{Py_SetProgramName()},
2373\cfunction{PyEval_InitThreads()}, \cfunction{PyEval_ReleaseLock()},
2374and \cfunction{PyEval_AcquireLock()}. This initializes the table of
2375loaded modules (\code{sys.modules}), and creates the fundamental
Fred Drake4de05a91998-02-16 14:25:26 +00002376modules \module{__builtin__}\refbimodindex{__builtin__},
2377\module{__main__}\refbimodindex{__main__} and
2378\module{sys}\refbimodindex{sys}. It also initializes the module
2379search path (\code{sys.path}).%
2380\indexiii{module}{search}{path}
2381It does not set \code{sys.argv}; use \cfunction{PySys_SetArgv()} for
2382that. This is a no-op when called for a second time (without calling
Fred Drakee058b4f1998-02-16 06:15:35 +00002383\cfunction{Py_Finalize()} first). There is no return value; it is a
2384fatal error if the initialization fails.
Guido van Rossum42cefd01997-10-05 15:27:29 +00002385\end{cfuncdesc}
2386
2387\begin{cfuncdesc}{int}{Py_IsInitialized}{}
Guido van Rossum42cefd01997-10-05 15:27:29 +00002388Return true (nonzero) when the Python interpreter has been
Fred Drakee058b4f1998-02-16 06:15:35 +00002389initialized, false (zero) if not. After \cfunction{Py_Finalize()} is
2390called, this returns false until \cfunction{Py_Initialize()} is called
Guido van Rossum42cefd01997-10-05 15:27:29 +00002391again.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002392\end{cfuncdesc}
2393
2394\begin{cfuncdesc}{void}{Py_Finalize}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00002395Undo all initializations made by \cfunction{Py_Initialize()} and
2396subsequent use of Python/C API functions, and destroy all
2397sub-interpreters (see \cfunction{Py_NewInterpreter()} below) that were
2398created and not yet destroyed since the last call to
2399\cfunction{Py_Initialize()}. Ideally, this frees all memory allocated
2400by the Python interpreter. This is a no-op when called for a second
2401time (without calling \cfunction{Py_Initialize()} again first). There
2402is no return value; errors during finalization are ignored.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002403
2404This function is provided for a number of reasons. An embedding
2405application might want to restart Python without having to restart the
2406application itself. An application that has loaded the Python
2407interpreter from a dynamically loadable library (or DLL) might want to
2408free all memory allocated by Python before unloading the DLL. During a
2409hunt for memory leaks in an application a developer might want to free
2410all memory allocated by Python before exiting from the application.
2411
Fred Drakee058b4f1998-02-16 06:15:35 +00002412\strong{Bugs and caveats:} The destruction of modules and objects in
Guido van Rossum4a944d71997-08-14 20:35:38 +00002413modules is done in random order; this may cause destructors
Fred Drakee058b4f1998-02-16 06:15:35 +00002414(\method{__del__()} methods) to fail when they depend on other objects
Guido van Rossum4a944d71997-08-14 20:35:38 +00002415(even functions) or modules. Dynamically loaded extension modules
2416loaded by Python are not unloaded. Small amounts of memory allocated
2417by the Python interpreter may not be freed (if you find a leak, please
2418report it). Memory tied up in circular references between objects is
2419not freed. Some memory allocated by extension modules may not be
2420freed. Some extension may not work properly if their initialization
2421routine is called more than once; this can happen if an applcation
Fred Drakee058b4f1998-02-16 06:15:35 +00002422calls \cfunction{Py_Initialize()} and \cfunction{Py_Finalize()} more
2423than once.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002424\end{cfuncdesc}
2425
Fred Drakec6fa34e1998-04-02 06:47:24 +00002426\begin{cfuncdesc}{PyThreadState*}{Py_NewInterpreter}{}
Fred Drake4de05a91998-02-16 14:25:26 +00002427Create a new sub-interpreter. This is an (almost) totally separate
2428environment for the execution of Python code. In particular, the new
2429interpreter has separate, independent versions of all imported
2430modules, including the fundamental modules
2431\module{__builtin__}\refbimodindex{__builtin__},
2432\module{__main__}\refbimodindex{__main__} and
2433\module{sys}\refbimodindex{sys}. The table of loaded modules
2434(\code{sys.modules}) and the module search path (\code{sys.path}) are
2435also separate. The new environment has no \code{sys.argv} variable.
2436It has new standard I/O stream file objects \code{sys.stdin},
2437\code{sys.stdout} and \code{sys.stderr} (however these refer to the
Fred Drakef8830d11998-04-23 14:06:01 +00002438same underlying \ctype{FILE} structures in the \C{} library).
Guido van Rossum4a944d71997-08-14 20:35:38 +00002439
2440The return value points to the first thread state created in the new
2441sub-interpreter. This thread state is made the current thread state.
2442Note that no actual thread is created; see the discussion of thread
2443states below. If creation of the new interpreter is unsuccessful,
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002444\NULL{} is returned; no exception is set since the exception state
Guido van Rossum4a944d71997-08-14 20:35:38 +00002445is stored in the current thread state and there may not be a current
2446thread state. (Like all other Python/C API functions, the global
2447interpreter lock must be held before calling this function and is
2448still held when it returns; however, unlike most other Python/C API
2449functions, there needn't be a current thread state on entry.)
2450
2451Extension modules are shared between (sub-)interpreters as follows:
2452the first time a particular extension is imported, it is initialized
2453normally, and a (shallow) copy of its module's dictionary is
2454squirreled away. When the same extension is imported by another
2455(sub-)interpreter, a new module is initialized and filled with the
Fred Drakee058b4f1998-02-16 06:15:35 +00002456contents of this copy; the extension's \code{init} function is not
2457called. Note that this is different from what happens when an
2458extension is imported after the interpreter has been completely
2459re-initialized by calling \cfunction{Py_Finalize()} and
2460\cfunction{Py_Initialize()}; in that case, the extension's \code{init}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002461function \emph{is} called again.
2462
Fred Drakee058b4f1998-02-16 06:15:35 +00002463\strong{Bugs and caveats:} Because sub-interpreters (and the main
Guido van Rossum4a944d71997-08-14 20:35:38 +00002464interpreter) are part of the same process, the insulation between them
Fred Drakee058b4f1998-02-16 06:15:35 +00002465isn't perfect --- for example, using low-level file operations like
Fred Drakef8830d11998-04-23 14:06:01 +00002466\function{os.close()} they can (accidentally or maliciously) affect each
Guido van Rossum4a944d71997-08-14 20:35:38 +00002467other's open files. Because of the way extensions are shared between
2468(sub-)interpreters, some extensions may not work properly; this is
2469especially likely when the extension makes use of (static) global
2470variables, or when the extension manipulates its module's dictionary
2471after its initialization. It is possible to insert objects created in
2472one sub-interpreter into a namespace of another sub-interpreter; this
2473should be done with great care to avoid sharing user-defined
2474functions, methods, instances or classes between sub-interpreters,
2475since import operations executed by such objects may affect the
2476wrong (sub-)interpreter's dictionary of loaded modules. (XXX This is
2477a hard-to-fix bug that will be addressed in a future release.)
2478\end{cfuncdesc}
2479
2480\begin{cfuncdesc}{void}{Py_EndInterpreter}{PyThreadState *tstate}
2481Destroy the (sub-)interpreter represented by the given thread state.
2482The given thread state must be the current thread state. See the
2483discussion of thread states below. When the call returns, the current
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002484thread state is \NULL{}. All thread states associated with this
Guido van Rossum4a944d71997-08-14 20:35:38 +00002485interpreted are destroyed. (The global interpreter lock must be held
2486before calling this function and is still held when it returns.)
Fred Drakee058b4f1998-02-16 06:15:35 +00002487\cfunction{Py_Finalize()} will destroy all sub-interpreters that haven't
Guido van Rossum4a944d71997-08-14 20:35:38 +00002488been explicitly destroyed at that point.
2489\end{cfuncdesc}
2490
2491\begin{cfuncdesc}{void}{Py_SetProgramName}{char *name}
Fred Drakee058b4f1998-02-16 06:15:35 +00002492This function should be called before \cfunction{Py_Initialize()} is called
Guido van Rossum4a944d71997-08-14 20:35:38 +00002493for the first time, if it is called at all. It tells the interpreter
Fred Drakee058b4f1998-02-16 06:15:35 +00002494the value of the \code{argv[0]} argument to the \cfunction{main()} function
2495of the program. This is used by \cfunction{Py_GetPath()} and some other
Guido van Rossum4a944d71997-08-14 20:35:38 +00002496functions below to find the Python run-time libraries relative to the
2497interpreter executable. The default value is \code{"python"}. The
2498argument should point to a zero-terminated character string in static
2499storage whose contents will not change for the duration of the
2500program's execution. No code in the Python interpreter will change
2501the contents of this storage.
2502\end{cfuncdesc}
2503
Fred Drakec6fa34e1998-04-02 06:47:24 +00002504\begin{cfuncdesc}{char*}{Py_GetProgramName}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00002505Return the program name set with \cfunction{Py_SetProgramName()}, or the
Guido van Rossum4a944d71997-08-14 20:35:38 +00002506default. The returned string points into static storage; the caller
2507should not modify its value.
2508\end{cfuncdesc}
2509
Fred Drakec6fa34e1998-04-02 06:47:24 +00002510\begin{cfuncdesc}{char*}{Py_GetPrefix}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00002511Return the \emph{prefix} for installed platform-independent files. This
Guido van Rossum4a944d71997-08-14 20:35:38 +00002512is derived through a number of complicated rules from the program name
Fred Drakee058b4f1998-02-16 06:15:35 +00002513set with \cfunction{Py_SetProgramName()} and some environment variables;
Guido van Rossum4a944d71997-08-14 20:35:38 +00002514for example, if the program name is \code{"/usr/local/bin/python"},
2515the prefix is \code{"/usr/local"}. The returned string points into
2516static storage; the caller should not modify its value. This
Fred Drakec94d9341998-04-12 02:39:13 +00002517corresponds to the \makevar{prefix} variable in the top-level
2518\file{Makefile} and the \code{-}\code{-prefix} argument to the
Fred Drakee058b4f1998-02-16 06:15:35 +00002519\program{configure} script at build time. The value is available to
Fred Drakeb0a78731998-01-13 18:51:10 +00002520Python code as \code{sys.prefix}. It is only useful on \UNIX{}. See
Guido van Rossum4a944d71997-08-14 20:35:38 +00002521also the next function.
2522\end{cfuncdesc}
2523
Fred Drakec6fa34e1998-04-02 06:47:24 +00002524\begin{cfuncdesc}{char*}{Py_GetExecPrefix}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00002525Return the \emph{exec-prefix} for installed platform-\emph{de}pendent
Guido van Rossum4a944d71997-08-14 20:35:38 +00002526files. This is derived through a number of complicated rules from the
Fred Drakee058b4f1998-02-16 06:15:35 +00002527program name set with \cfunction{Py_SetProgramName()} and some environment
Guido van Rossum4a944d71997-08-14 20:35:38 +00002528variables; for example, if the program name is
2529\code{"/usr/local/bin/python"}, the exec-prefix is
2530\code{"/usr/local"}. The returned string points into static storage;
2531the caller should not modify its value. This corresponds to the
Fred Drakec94d9341998-04-12 02:39:13 +00002532\makevar{exec_prefix} variable in the top-level \file{Makefile} and the
2533\code{-}\code{-exec_prefix} argument to the \program{configure} script
2534at build time. The value is available to Python code as
Fred Drakeb0a78731998-01-13 18:51:10 +00002535\code{sys.exec_prefix}. It is only useful on \UNIX{}.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002536
2537Background: The exec-prefix differs from the prefix when platform
2538dependent files (such as executables and shared libraries) are
2539installed in a different directory tree. In a typical installation,
2540platform dependent files may be installed in the
2541\code{"/usr/local/plat"} subtree while platform independent may be
2542installed in \code{"/usr/local"}.
2543
2544Generally speaking, a platform is a combination of hardware and
2545software families, e.g. Sparc machines running the Solaris 2.x
2546operating system are considered the same platform, but Intel machines
2547running Solaris 2.x are another platform, and Intel machines running
2548Linux are yet another platform. Different major revisions of the same
Fred Drakeb0a78731998-01-13 18:51:10 +00002549operating system generally also form different platforms. Non-\UNIX{}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002550operating systems are a different story; the installation strategies
2551on those systems are so different that the prefix and exec-prefix are
2552meaningless, and set to the empty string. Note that compiled Python
2553bytecode files are platform independent (but not independent from the
2554Python version by which they were compiled!).
2555
Fred Drakee058b4f1998-02-16 06:15:35 +00002556System administrators will know how to configure the \program{mount} or
2557\program{automount} programs to share \code{"/usr/local"} between platforms
Guido van Rossum4a944d71997-08-14 20:35:38 +00002558while having \code{"/usr/local/plat"} be a different filesystem for each
2559platform.
2560\end{cfuncdesc}
2561
Fred Drakec6fa34e1998-04-02 06:47:24 +00002562\begin{cfuncdesc}{char*}{Py_GetProgramFullPath}{}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002563Return the full program name of the Python executable; this is
2564computed as a side-effect of deriving the default module search path
Fred Drakee058b4f1998-02-16 06:15:35 +00002565from the program name (set by \cfunction{Py_SetProgramName()} above). The
Guido van Rossum4a944d71997-08-14 20:35:38 +00002566returned string points into static storage; the caller should not
2567modify its value. The value is available to Python code as
Guido van Rossum42cefd01997-10-05 15:27:29 +00002568\code{sys.executable}.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002569\end{cfuncdesc}
2570
Fred Drakec6fa34e1998-04-02 06:47:24 +00002571\begin{cfuncdesc}{char*}{Py_GetPath}{}
Fred Drake4de05a91998-02-16 14:25:26 +00002572\indexiii{module}{search}{path}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002573Return the default module search path; this is computed from the
Fred Drakee058b4f1998-02-16 06:15:35 +00002574program name (set by \cfunction{Py_SetProgramName()} above) and some
Guido van Rossum4a944d71997-08-14 20:35:38 +00002575environment variables. The returned string consists of a series of
2576directory names separated by a platform dependent delimiter character.
Fred Drakef8830d11998-04-23 14:06:01 +00002577The delimiter character is \character{:} on \UNIX{}, \character{;} on
2578DOS/Windows, and \character{\\n} (the \ASCII{} newline character) on
Fred Drakee5bc4971998-02-12 23:36:49 +00002579Macintosh. The returned string points into static storage; the caller
Guido van Rossum4a944d71997-08-14 20:35:38 +00002580should not modify its value. The value is available to Python code
2581as the list \code{sys.path}, which may be modified to change the
2582future search path for loaded modules.
2583
2584% XXX should give the exact rules
2585\end{cfuncdesc}
2586
Fred Drakec6fa34e1998-04-02 06:47:24 +00002587\begin{cfuncdesc}{const char*}{Py_GetVersion}{}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002588Return the version of this Python interpreter. This is a string that
2589looks something like
2590
Guido van Rossum09270b51997-08-15 18:57:32 +00002591\begin{verbatim}
Fred Drakee058b4f1998-02-16 06:15:35 +00002592"1.5 (#67, Dec 31 1997, 22:34:28) [GCC 2.7.2.2]"
Guido van Rossum09270b51997-08-15 18:57:32 +00002593\end{verbatim}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002594
2595The first word (up to the first space character) is the current Python
2596version; the first three characters are the major and minor version
2597separated by a period. The returned string points into static storage;
2598the caller should not modify its value. The value is available to
2599Python code as the list \code{sys.version}.
2600\end{cfuncdesc}
2601
Fred Drakec6fa34e1998-04-02 06:47:24 +00002602\begin{cfuncdesc}{const char*}{Py_GetPlatform}{}
Fred Drakeb0a78731998-01-13 18:51:10 +00002603Return the platform identifier for the current platform. On \UNIX{},
Guido van Rossum4a944d71997-08-14 20:35:38 +00002604this is formed from the ``official'' name of the operating system,
2605converted to lower case, followed by the major revision number; e.g.,
2606for Solaris 2.x, which is also known as SunOS 5.x, the value is
2607\code{"sunos5"}. On Macintosh, it is \code{"mac"}. On Windows, it
2608is \code{"win"}. The returned string points into static storage;
2609the caller should not modify its value. The value is available to
2610Python code as \code{sys.platform}.
2611\end{cfuncdesc}
2612
Fred Drakec6fa34e1998-04-02 06:47:24 +00002613\begin{cfuncdesc}{const char*}{Py_GetCopyright}{}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002614Return the official copyright string for the current Python version,
2615for example
2616
2617\code{"Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam"}
2618
2619The returned string points into static storage; the caller should not
2620modify its value. The value is available to Python code as the list
2621\code{sys.copyright}.
2622\end{cfuncdesc}
2623
Fred Drakec6fa34e1998-04-02 06:47:24 +00002624\begin{cfuncdesc}{const char*}{Py_GetCompiler}{}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002625Return an indication of the compiler used to build the current Python
Fred Drakee058b4f1998-02-16 06:15:35 +00002626version, in square brackets, for example:
Guido van Rossum4a944d71997-08-14 20:35:38 +00002627
Fred Drakee058b4f1998-02-16 06:15:35 +00002628\begin{verbatim}
2629"[GCC 2.7.2.2]"
2630\end{verbatim}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002631
2632The returned string points into static storage; the caller should not
2633modify its value. The value is available to Python code as part of
2634the variable \code{sys.version}.
2635\end{cfuncdesc}
2636
Fred Drakec6fa34e1998-04-02 06:47:24 +00002637\begin{cfuncdesc}{const char*}{Py_GetBuildInfo}{}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002638Return information about the sequence number and build date and time
2639of the current Python interpreter instance, for example
2640
Guido van Rossum09270b51997-08-15 18:57:32 +00002641\begin{verbatim}
2642"#67, Aug 1 1997, 22:34:28"
2643\end{verbatim}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002644
2645The returned string points into static storage; the caller should not
2646modify its value. The value is available to Python code as part of
2647the variable \code{sys.version}.
2648\end{cfuncdesc}
2649
2650\begin{cfuncdesc}{int}{PySys_SetArgv}{int argc, char **argv}
2651% XXX
2652\end{cfuncdesc}
2653
2654% XXX Other PySys thingies (doesn't really belong in this chapter)
2655
2656\section{Thread State and the Global Interpreter Lock}
Fred Drakef39ed671998-02-26 22:01:23 +00002657\label{threads}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002658
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002659The Python interpreter is not fully thread safe. In order to support
2660multi-threaded Python programs, there's a global lock that must be
2661held by the current thread before it can safely access Python objects.
2662Without the lock, even the simplest operations could cause problems in
Fred Drake7baf3d41998-02-20 00:45:52 +00002663a multi-threaded program: for example, when two threads simultaneously
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002664increment the reference count of the same object, the reference count
2665could end up being incremented only once instead of twice.
2666
2667Therefore, the rule exists that only the thread that has acquired the
2668global interpreter lock may operate on Python objects or call Python/C
2669API functions. In order to support multi-threaded Python programs,
Fred Drakee058b4f1998-02-16 06:15:35 +00002670the interpreter regularly release and reacquires the lock --- by
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002671default, every ten bytecode instructions (this can be changed with
Fred Drakee058b4f1998-02-16 06:15:35 +00002672\function{sys.setcheckinterval()}). The lock is also released and
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002673reacquired around potentially blocking I/O operations like reading or
2674writing a file, so that other threads can run while the thread that
2675requests the I/O is waiting for the I/O operation to complete.
2676
2677The Python interpreter needs to keep some bookkeeping information
Fred Drakee058b4f1998-02-16 06:15:35 +00002678separate per thread --- for this it uses a data structure called
Fred Drakef8830d11998-04-23 14:06:01 +00002679\ctype{PyThreadState}. This is new in Python 1.5; in earlier versions,
Fred Drakee058b4f1998-02-16 06:15:35 +00002680such state was stored in global variables, and switching threads could
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002681cause problems. In particular, exception handling is now thread safe,
Fred Drakee058b4f1998-02-16 06:15:35 +00002682when the application uses \function{sys.exc_info()} to access the
2683exception last raised in the current thread.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002684
2685There's one global variable left, however: the pointer to the current
Fred Drakef8830d11998-04-23 14:06:01 +00002686\ctype{PyThreadState} structure. While most thread packages have a way
Fred Drake9d20ac31998-02-16 15:27:08 +00002687to store ``per-thread global data,'' Python's internal platform
Fred Drakee058b4f1998-02-16 06:15:35 +00002688independent thread abstraction doesn't support this yet. Therefore,
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002689the current thread state must be manipulated explicitly.
2690
2691This is easy enough in most cases. Most code manipulating the global
2692interpreter lock has the following simple structure:
2693
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002694\begin{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002695Save the thread state in a local variable.
2696Release the interpreter lock.
2697...Do some blocking I/O operation...
2698Reacquire the interpreter lock.
2699Restore the thread state from the local variable.
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002700\end{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002701
2702This is so common that a pair of macros exists to simplify it:
2703
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002704\begin{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002705Py_BEGIN_ALLOW_THREADS
2706...Do some blocking I/O operation...
2707Py_END_ALLOW_THREADS
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002708\end{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002709
Fred Drakee058b4f1998-02-16 06:15:35 +00002710The \code{Py_BEGIN_ALLOW_THREADS} macro opens a new block and declares
2711a hidden local variable; the \code{Py_END_ALLOW_THREADS} macro closes
2712the block. Another advantage of using these two macros is that when
2713Python is compiled without thread support, they are defined empty,
2714thus saving the thread state and lock manipulations.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002715
2716When thread support is enabled, the block above expands to the
2717following code:
2718
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002719\begin{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002720{
2721 PyThreadState *_save;
2722 _save = PyEval_SaveThread();
2723 ...Do some blocking I/O operation...
2724 PyEval_RestoreThread(_save);
2725}
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002726\end{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002727
2728Using even lower level primitives, we can get roughly the same effect
2729as follows:
2730
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002731\begin{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002732{
2733 PyThreadState *_save;
2734 _save = PyThreadState_Swap(NULL);
2735 PyEval_ReleaseLock();
2736 ...Do some blocking I/O operation...
2737 PyEval_AcquireLock();
2738 PyThreadState_Swap(_save);
2739}
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002740\end{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002741
2742There are some subtle differences; in particular,
Fred Drakee058b4f1998-02-16 06:15:35 +00002743\cfunction{PyEval_RestoreThread()} saves and restores the value of the
Fred Drakef8830d11998-04-23 14:06:01 +00002744global variable \cdata{errno}, since the lock manipulation does not
2745guarantee that \cdata{errno} is left alone. Also, when thread support
Fred Drakee058b4f1998-02-16 06:15:35 +00002746is disabled, \cfunction{PyEval_SaveThread()} and
2747\cfunction{PyEval_RestoreThread()} don't manipulate the lock; in this
2748case, \cfunction{PyEval_ReleaseLock()} and
2749\cfunction{PyEval_AcquireLock()} are not available. This is done so
2750that dynamically loaded extensions compiled with thread support
2751enabled can be loaded by an interpreter that was compiled with
2752disabled thread support.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002753
2754The global interpreter lock is used to protect the pointer to the
2755current thread state. When releasing the lock and saving the thread
2756state, the current thread state pointer must be retrieved before the
2757lock is released (since another thread could immediately acquire the
2758lock and store its own thread state in the global variable).
2759Reversely, when acquiring the lock and restoring the thread state, the
2760lock must be acquired before storing the thread state pointer.
2761
2762Why am I going on with so much detail about this? Because when
Fred Drakeb0a78731998-01-13 18:51:10 +00002763threads are created from \C{}, they don't have the global interpreter
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002764lock, nor is there a thread state data structure for them. Such
2765threads must bootstrap themselves into existence, by first creating a
2766thread state data structure, then acquiring the lock, and finally
2767storing their thread state pointer, before they can start using the
2768Python/C API. When they are done, they should reset the thread state
2769pointer, release the lock, and finally free their thread state data
2770structure.
2771
2772When creating a thread data structure, you need to provide an
2773interpreter state data structure. The interpreter state data
2774structure hold global data that is shared by all threads in an
2775interpreter, for example the module administration
2776(\code{sys.modules}). Depending on your needs, you can either create
2777a new interpreter state data structure, or share the interpreter state
2778data structure used by the Python main thread (to access the latter,
Fred Drakef8830d11998-04-23 14:06:01 +00002779you must obtain the thread state and access its \member{interp} member;
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002780this must be done by a thread that is created by Python or by the main
2781thread after Python is initialized).
2782
2783XXX More?
2784
2785\begin{ctypedesc}{PyInterpreterState}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002786This data structure represents the state shared by a number of
2787cooperating threads. Threads belonging to the same interpreter
2788share their module administration and a few other internal items.
2789There are no public members in this structure.
2790
2791Threads belonging to different interpreters initially share nothing,
2792except process state like available memory, open file descriptors and
2793such. The global interpreter lock is also shared by all threads,
2794regardless of to which interpreter they belong.
2795\end{ctypedesc}
2796
2797\begin{ctypedesc}{PyThreadState}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002798This data structure represents the state of a single thread. The only
Fred Drakef8830d11998-04-23 14:06:01 +00002799public data member is \ctype{PyInterpreterState *}\member{interp},
2800which points to this thread's interpreter state.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002801\end{ctypedesc}
2802
2803\begin{cfuncdesc}{void}{PyEval_InitThreads}{}
2804Initialize and acquire the global interpreter lock. It should be
2805called in the main thread before creating a second thread or engaging
Fred Drakee058b4f1998-02-16 06:15:35 +00002806in any other thread operations such as
2807\cfunction{PyEval_ReleaseLock()} or
2808\code{PyEval_ReleaseThread(\var{tstate})}. It is not needed before
2809calling \cfunction{PyEval_SaveThread()} or
2810\cfunction{PyEval_RestoreThread()}.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002811
2812This is a no-op when called for a second time. It is safe to call
Fred Drakee058b4f1998-02-16 06:15:35 +00002813this function before calling \cfunction{Py_Initialize()}.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002814
2815When only the main thread exists, no lock operations are needed. This
2816is a common situation (most Python programs do not use threads), and
2817the lock operations slow the interpreter down a bit. Therefore, the
2818lock is not created initially. This situation is equivalent to having
2819acquired the lock: when there is only a single thread, all object
2820accesses are safe. Therefore, when this function initializes the
Fred Drake4de05a91998-02-16 14:25:26 +00002821lock, it also acquires it. Before the Python
2822\module{thread}\refbimodindex{thread} module creates a new thread,
2823knowing that either it has the lock or the lock hasn't been created
2824yet, it calls \cfunction{PyEval_InitThreads()}. When this call
2825returns, it is guaranteed that the lock has been created and that it
2826has acquired it.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002827
2828It is \strong{not} safe to call this function when it is unknown which
2829thread (if any) currently has the global interpreter lock.
2830
2831This function is not available when thread support is disabled at
2832compile time.
2833\end{cfuncdesc}
2834
Guido van Rossum4a944d71997-08-14 20:35:38 +00002835\begin{cfuncdesc}{void}{PyEval_AcquireLock}{}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002836Acquire the global interpreter lock. The lock must have been created
2837earlier. If this thread already has the lock, a deadlock ensues.
2838This function is not available when thread support is disabled at
2839compile time.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002840\end{cfuncdesc}
2841
2842\begin{cfuncdesc}{void}{PyEval_ReleaseLock}{}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002843Release the global interpreter lock. The lock must have been created
2844earlier. This function is not available when thread support is
Fred Drakee058b4f1998-02-16 06:15:35 +00002845disabled at compile time.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002846\end{cfuncdesc}
2847
2848\begin{cfuncdesc}{void}{PyEval_AcquireThread}{PyThreadState *tstate}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002849Acquire the global interpreter lock and then set the current thread
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002850state to \var{tstate}, which should not be \NULL{}. The lock must
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002851have been created earlier. If this thread already has the lock,
2852deadlock ensues. This function is not available when thread support
Fred Drakee058b4f1998-02-16 06:15:35 +00002853is disabled at compile time.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002854\end{cfuncdesc}
2855
2856\begin{cfuncdesc}{void}{PyEval_ReleaseThread}{PyThreadState *tstate}
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002857Reset the current thread state to \NULL{} and release the global
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002858interpreter lock. The lock must have been created earlier and must be
2859held by the current thread. The \var{tstate} argument, which must not
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002860be \NULL{}, is only used to check that it represents the current
Fred Drakee058b4f1998-02-16 06:15:35 +00002861thread state --- if it isn't, a fatal error is reported. This
2862function is not available when thread support is disabled at compile
2863time.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002864\end{cfuncdesc}
2865
Fred Drakec6fa34e1998-04-02 06:47:24 +00002866\begin{cfuncdesc}{PyThreadState*}{PyEval_SaveThread}{}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002867Release the interpreter lock (if it has been created and thread
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002868support is enabled) and reset the thread state to \NULL{},
2869returning the previous thread state (which is not \NULL{}). If
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002870the lock has been created, the current thread must have acquired it.
2871(This function is available even when thread support is disabled at
2872compile time.)
Guido van Rossum4a944d71997-08-14 20:35:38 +00002873\end{cfuncdesc}
2874
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002875\begin{cfuncdesc}{void}{PyEval_RestoreThread}{PyThreadState *tstate}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002876Acquire the interpreter lock (if it has been created and thread
2877support is enabled) and set the thread state to \var{tstate}, which
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002878must not be \NULL{}. If the lock has been created, the current
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002879thread must not have acquired it, otherwise deadlock ensues. (This
2880function is available even when thread support is disabled at compile
2881time.)
Guido van Rossum4a944d71997-08-14 20:35:38 +00002882\end{cfuncdesc}
2883
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002884% XXX These aren't really C types, but the ctypedesc macro is the simplest!
2885\begin{ctypedesc}{Py_BEGIN_ALLOW_THREADS}
2886This macro expands to
Fred Drakee058b4f1998-02-16 06:15:35 +00002887\samp{\{ PyThreadState *_save; _save = PyEval_SaveThread();}.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002888Note that it contains an opening brace; it must be matched with a
2889following \code{Py_END_ALLOW_THREADS} macro. See above for further
2890discussion of this macro. It is a no-op when thread support is
2891disabled at compile time.
2892\end{ctypedesc}
2893
2894\begin{ctypedesc}{Py_END_ALLOW_THREADS}
2895This macro expands to
Fred Drakee058b4f1998-02-16 06:15:35 +00002896\samp{PyEval_RestoreThread(_save); \}}.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002897Note that it contains a closing brace; it must be matched with an
2898earlier \code{Py_BEGIN_ALLOW_THREADS} macro. See above for further
2899discussion of this macro. It is a no-op when thread support is
2900disabled at compile time.
2901\end{ctypedesc}
2902
2903\begin{ctypedesc}{Py_BEGIN_BLOCK_THREADS}
Fred Drakee058b4f1998-02-16 06:15:35 +00002904This macro expands to \samp{PyEval_RestoreThread(_save);} i.e. it
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002905is equivalent to \code{Py_END_ALLOW_THREADS} without the closing
2906brace. It is a no-op when thread support is disabled at compile
2907time.
2908\end{ctypedesc}
2909
2910\begin{ctypedesc}{Py_BEGIN_UNBLOCK_THREADS}
Fred Drakee058b4f1998-02-16 06:15:35 +00002911This macro expands to \samp{_save = PyEval_SaveThread();} i.e. it is
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002912equivalent to \code{Py_BEGIN_ALLOW_THREADS} without the opening brace
2913and variable declaration. It is a no-op when thread support is
2914disabled at compile time.
2915\end{ctypedesc}
2916
2917All of the following functions are only available when thread support
2918is enabled at compile time, and must be called only when the
Fred Drake9d20ac31998-02-16 15:27:08 +00002919interpreter lock has been created.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002920
Fred Drakec6fa34e1998-04-02 06:47:24 +00002921\begin{cfuncdesc}{PyInterpreterState*}{PyInterpreterState_New}{}
Guido van Rossumed9dcc11998-08-07 18:28:03 +00002922Create a new interpreter state object. The interpreter lock need not
2923be held, but may be held if it is necessary to serialize calls to this
2924function.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002925\end{cfuncdesc}
2926
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002927\begin{cfuncdesc}{void}{PyInterpreterState_Clear}{PyInterpreterState *interp}
2928Reset all information in an interpreter state object. The interpreter
2929lock must be held.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002930\end{cfuncdesc}
2931
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002932\begin{cfuncdesc}{void}{PyInterpreterState_Delete}{PyInterpreterState *interp}
2933Destroy an interpreter state object. The interpreter lock need not be
2934held. The interpreter state must have been reset with a previous
Fred Drakee058b4f1998-02-16 06:15:35 +00002935call to \cfunction{PyInterpreterState_Clear()}.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002936\end{cfuncdesc}
2937
Fred Drakec6fa34e1998-04-02 06:47:24 +00002938\begin{cfuncdesc}{PyThreadState*}{PyThreadState_New}{PyInterpreterState *interp}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002939Create a new thread state object belonging to the given interpreter
Guido van Rossumed9dcc11998-08-07 18:28:03 +00002940object. The interpreter lock need not be held, but may be held if it
2941is necessary to serialize calls to this function.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002942\end{cfuncdesc}
2943
2944\begin{cfuncdesc}{void}{PyThreadState_Clear}{PyThreadState *tstate}
2945Reset all information in a thread state object. The interpreter lock
2946must be held.
2947\end{cfuncdesc}
2948
2949\begin{cfuncdesc}{void}{PyThreadState_Delete}{PyThreadState *tstate}
2950Destroy a thread state object. The interpreter lock need not be
2951held. The thread state must have been reset with a previous
Fred Drakee058b4f1998-02-16 06:15:35 +00002952call to \cfunction{PyThreadState_Clear()}.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002953\end{cfuncdesc}
2954
Fred Drakec6fa34e1998-04-02 06:47:24 +00002955\begin{cfuncdesc}{PyThreadState*}{PyThreadState_Get}{}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002956Return the current thread state. The interpreter lock must be held.
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002957When the current thread state is \NULL{}, this issues a fatal
Guido van Rossum5b8a5231997-12-30 04:38:44 +00002958error (so that the caller needn't check for \NULL{}).
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002959\end{cfuncdesc}
2960
Fred Drakec6fa34e1998-04-02 06:47:24 +00002961\begin{cfuncdesc}{PyThreadState*}{PyThreadState_Swap}{PyThreadState *tstate}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002962Swap the current thread state with the thread state given by the
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002963argument \var{tstate}, which may be \NULL{}. The interpreter lock
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002964must be held.
2965\end{cfuncdesc}
2966
2967
Fred Drakee058b4f1998-02-16 06:15:35 +00002968\chapter{Defining New Object Types}
Fred Drakef39ed671998-02-26 22:01:23 +00002969\label{newTypes}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002970
Fred Drakec6fa34e1998-04-02 06:47:24 +00002971\begin{cfuncdesc}{PyObject*}{_PyObject_New}{PyTypeObject *type}
Fred Drakee058b4f1998-02-16 06:15:35 +00002972\end{cfuncdesc}
2973
Fred Drakec6fa34e1998-04-02 06:47:24 +00002974\begin{cfuncdesc}{PyObject*}{_PyObject_NewVar}{PyTypeObject *type, int size}
Fred Drakee058b4f1998-02-16 06:15:35 +00002975\end{cfuncdesc}
2976
2977\begin{cfuncdesc}{TYPE}{_PyObject_NEW}{TYPE, PyTypeObject *}
2978\end{cfuncdesc}
2979
2980\begin{cfuncdesc}{TYPE}{_PyObject_NEW_VAR}{TYPE, PyTypeObject *, int size}
2981\end{cfuncdesc}
2982
Guido van Rossum3c4378b1998-04-14 20:21:10 +00002983Py_InitModule (!!!)
2984
2985PyArg_ParseTupleAndKeywords, PyArg_ParseTuple, PyArg_Parse
2986
2987Py_BuildValue
Guido van Rossumae110af1997-05-22 20:11:52 +00002988
2989PyObject, PyVarObject
2990
2991PyObject_HEAD, PyObject_HEAD_INIT, PyObject_VAR_HEAD
2992
2993Typedefs:
2994unaryfunc, binaryfunc, ternaryfunc, inquiry, coercion, intargfunc,
2995intintargfunc, intobjargproc, intintobjargproc, objobjargproc,
2996getreadbufferproc, getwritebufferproc, getsegcountproc,
2997destructor, printfunc, getattrfunc, getattrofunc, setattrfunc,
2998setattrofunc, cmpfunc, reprfunc, hashfunc
2999
3000PyNumberMethods
3001
3002PySequenceMethods
3003
3004PyMappingMethods
3005
3006PyBufferProcs
3007
3008PyTypeObject
3009
3010DL_IMPORT
3011
3012PyType_Type
3013
3014Py*_Check
3015
3016Py_None, _Py_NoneStruct
3017
Guido van Rossumae110af1997-05-22 20:11:52 +00003018
Fred Drakee5bf8b21998-02-12 21:22:28 +00003019\chapter{Debugging}
Fred Drakef39ed671998-02-26 22:01:23 +00003020\label{debugging}
Guido van Rossumae110af1997-05-22 20:11:52 +00003021
Fred Drakee5bf8b21998-02-12 21:22:28 +00003022XXX Explain Py_DEBUG, Py_TRACE_REFS, Py_REF_DEBUG.
Guido van Rossum5b8a5231997-12-30 04:38:44 +00003023
3024
Fred Drakef3aa0e01998-03-17 06:23:13 +00003025\input{api.ind} % Index -- must be last
Guido van Rossum9231c8f1997-05-15 21:43:21 +00003026
3027\end{document}