blob: d2e6a44e522c91ffb0cabf6cc6599646b76f9f94 [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
Fred Drakebe486461999-11-09 17:03:03 +000025\citetitle[../ext/ext.html]{Extending and Embedding the Python
26Interpreter}, which describes the general principles of extension
27writing but does not document the API functions in detail.
Guido van Rossum9231c8f1997-05-15 21:43:21 +000028
Guido van Rossum5b8a5231997-12-30 04:38:44 +000029\strong{Warning:} The current version of this document is incomplete.
30I hope that it is nevertheless useful. I will continue to work on it,
31and release new versions from time to time, independent from Python
32source code releases.
33
Guido van Rossum9231c8f1997-05-15 21:43:21 +000034\end{abstract}
35
Fred Drake4d4f9e71998-01-13 22:25:02 +000036\tableofcontents
Guido van Rossum9231c8f1997-05-15 21:43:21 +000037
Guido van Rossum5060b3b1997-08-17 18:02:23 +000038% XXX Consider moving all this back to ext.tex and giving api.tex
39% XXX a *really* short intro only.
Guido van Rossum9231c8f1997-05-15 21:43:21 +000040
Fred Drakeefd146c1999-02-15 15:30:45 +000041\chapter{Introduction \label{intro}}
Guido van Rossum9231c8f1997-05-15 21:43:21 +000042
Fred Drakeb0a78731998-01-13 18:51:10 +000043The Application Programmer's Interface to Python gives \C{} and \Cpp{}
Guido van Rossum59a61351997-08-14 20:34:33 +000044programmers access to the Python interpreter at a variety of levels.
Fred Drakeb0a78731998-01-13 18:51:10 +000045The API is equally usable from \Cpp{}, but for brevity it is generally
46referred to as the Python/\C{} API. There are two fundamentally
Fred Drakee058b4f1998-02-16 06:15:35 +000047different reasons for using the Python/\C{} API. The first reason is
48to write \emph{extension modules} for specific purposes; these are
49\C{} modules that extend the Python interpreter. This is probably the
50most common use. The second reason is to use Python as a component in
51a larger application; this technique is generally referred to as
52\dfn{embedding} Python in an application.
Guido van Rossum59a61351997-08-14 20:34:33 +000053
Guido van Rossum4a944d71997-08-14 20:35:38 +000054Writing an extension module is a relatively well-understood process,
55where a ``cookbook'' approach works well. There are several tools
56that automate the process to some extent. While people have embedded
57Python in other applications since its early existence, the process of
58embedding Python is less straightforward that writing an extension.
59Python 1.5 introduces a number of new API functions as well as some
60changes to the build process that make embedding much simpler.
Fred Drakec6fa34e1998-04-02 06:47:24 +000061This manual describes the \version\ state of affairs.
Guido van Rossum59a61351997-08-14 20:34:33 +000062% XXX Eventually, take the historical notes out
63
Guido van Rossum4a944d71997-08-14 20:35:38 +000064Many API functions are useful independent of whether you're embedding
65or extending Python; moreover, most applications that embed Python
66will need to provide a custom extension as well, so it's probably a
67good idea to become familiar with writing an extension before
Guido van Rossum59a61351997-08-14 20:34:33 +000068attempting to embed Python in a real application.
69
Fred Drakeefd146c1999-02-15 15:30:45 +000070
71\section{Include Files \label{includes}}
Guido van Rossum580aa8d1997-11-25 15:34:51 +000072
73All function, type and macro definitions needed to use the Python/C
74API are included in your code by the following line:
75
Fred Drakee058b4f1998-02-16 06:15:35 +000076\begin{verbatim}
77#include "Python.h"
78\end{verbatim}
Guido van Rossum580aa8d1997-11-25 15:34:51 +000079
Fred Drakee058b4f1998-02-16 06:15:35 +000080This implies inclusion of the following standard headers:
81\code{<stdio.h>}, \code{<string.h>}, \code{<errno.h>}, and
82\code{<stdlib.h>} (if available).
Guido van Rossum580aa8d1997-11-25 15:34:51 +000083
84All user visible names defined by Python.h (except those defined by
Fred Drakee058b4f1998-02-16 06:15:35 +000085the included standard headers) have one of the prefixes \samp{Py} or
86\samp{_Py}. Names beginning with \samp{_Py} are for internal use
Guido van Rossum580aa8d1997-11-25 15:34:51 +000087only. Structure member names do not have a reserved prefix.
88
Fred Drakee058b4f1998-02-16 06:15:35 +000089\strong{Important:} user code should never define names that begin
90with \samp{Py} or \samp{_Py}. This confuses the reader, and
91jeopardizes the portability of the user code to future Python
92versions, which may define additional names beginning with one of
93these prefixes.
Guido van Rossum580aa8d1997-11-25 15:34:51 +000094
Fred Drakeefd146c1999-02-15 15:30:45 +000095
96\section{Objects, Types and Reference Counts \label{objects}}
Guido van Rossum59a61351997-08-14 20:34:33 +000097
Guido van Rossum580aa8d1997-11-25 15:34:51 +000098Most Python/C API functions have one or more arguments as well as a
Fred Drakef8830d11998-04-23 14:06:01 +000099return value of type \ctype{PyObject *}. This type is a pointer
Fred Drakee058b4f1998-02-16 06:15:35 +0000100to an opaque data type representing an arbitrary Python
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000101object. Since all Python object types are treated the same way by the
102Python language in most situations (e.g., assignments, scope rules,
103and argument passing), it is only fitting that they should be
Fred Drakeb0a78731998-01-13 18:51:10 +0000104represented by a single \C{} type. All Python objects live on the heap:
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000105you never declare an automatic or static variable of type
Fred Drakef8830d11998-04-23 14:06:01 +0000106\ctype{PyObject}, only pointer variables of type \ctype{PyObject *} can
Guido van Rossum59a61351997-08-14 20:34:33 +0000107be declared.
108
Fred Drakee058b4f1998-02-16 06:15:35 +0000109All Python objects (even Python integers) have a \dfn{type} and a
110\dfn{reference count}. An object's type determines what kind of object
Guido van Rossum4a944d71997-08-14 20:35:38 +0000111it is (e.g., an integer, a list, or a user-defined function; there are
Fred Drakebe486461999-11-09 17:03:03 +0000112many more as explained in the \citetitle[../ref/ref.html]{Python
113Reference Manual}). For each of the well-known types there is a macro
114to check whether an object is of that type; for instance,
115\samp{PyList_Check(\var{a})} is true if and only if the object pointed
116to by \var{a} is a Python list.
Guido van Rossum59a61351997-08-14 20:34:33 +0000117
Fred Drakeefd146c1999-02-15 15:30:45 +0000118
119\subsection{Reference Counts \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
Fred Drakeefd146c1999-02-15 15:30:45 +0000179
180\subsubsection{Reference Count Details \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
Fred Drakeefd146c1999-02-15 15:30:45 +0000344
345\subsection{Types \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
Fred Drakeefd146c1999-02-15 15:30:45 +0000354
355\section{Exceptions \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
Fred Drakeefd146c1999-02-15 15:30:45 +0000487\section{Embedding Python \label{embedding}}
Guido van Rossum59a61351997-08-14 20:34:33 +0000488
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000489The one important task that only embedders (as opposed to extension
490writers) of the Python interpreter have to worry about is the
491initialization, and possibly the finalization, of the Python
492interpreter. Most functionality of the interpreter can only be used
493after the interpreter has been initialized.
Guido van Rossum59a61351997-08-14 20:34:33 +0000494
Fred Drakee058b4f1998-02-16 06:15:35 +0000495The basic initialization function is \cfunction{Py_Initialize()}.
496This initializes the table of loaded modules, and creates the
Fred Drake4de05a91998-02-16 14:25:26 +0000497fundamental modules \module{__builtin__}\refbimodindex{__builtin__},
498\module{__main__}\refbimodindex{__main__} and
499\module{sys}\refbimodindex{sys}. It also initializes the module
Fred Drakec6fa34e1998-04-02 06:47:24 +0000500search path (\code{sys.path}).%
501\indexiii{module}{search}{path}
Guido van Rossum59a61351997-08-14 20:34:33 +0000502
Fred Drakee058b4f1998-02-16 06:15:35 +0000503\cfunction{Py_Initialize()} does not set the ``script argument list''
Guido van Rossum4a944d71997-08-14 20:35:38 +0000504(\code{sys.argv}). If this variable is needed by Python code that
505will be executed later, it must be set explicitly with a call to
506\code{PySys_SetArgv(\var{argc}, \var{argv})} subsequent to the call
Fred Drakee058b4f1998-02-16 06:15:35 +0000507to \cfunction{Py_Initialize()}.
Guido van Rossum59a61351997-08-14 20:34:33 +0000508
Fred Drakeb0a78731998-01-13 18:51:10 +0000509On most systems (in particular, on \UNIX{} and Windows, although the
Fred Drakee058b4f1998-02-16 06:15:35 +0000510details are slightly different), \cfunction{Py_Initialize()}
511calculates the module search path based upon its best guess for the
512location of the standard Python interpreter executable, assuming that
513the Python library is found in a fixed location relative to the Python
Guido van Rossum42cefd01997-10-05 15:27:29 +0000514interpreter executable. In particular, it looks for a directory named
Fred Drake2de75ec1998-04-09 14:12:11 +0000515\file{lib/python1.5} (replacing \file{1.5} with the current
Guido van Rossum42cefd01997-10-05 15:27:29 +0000516interpreter version) relative to the parent directory where the
Fred Drakee058b4f1998-02-16 06:15:35 +0000517executable named \file{python} is found on the shell command search
Fred Drakec6fa34e1998-04-02 06:47:24 +0000518path (the environment variable \envvar{PATH}).
Guido van Rossum42cefd01997-10-05 15:27:29 +0000519
520For instance, if the Python executable is found in
Fred Drakee058b4f1998-02-16 06:15:35 +0000521\file{/usr/local/bin/python}, it will assume that the libraries are in
Fred Drake2de75ec1998-04-09 14:12:11 +0000522\file{/usr/local/lib/python1.5}. (In fact, this particular path
Fred Drakee058b4f1998-02-16 06:15:35 +0000523is also the ``fallback'' location, used when no executable file named
Fred Drakec6fa34e1998-04-02 06:47:24 +0000524\file{python} is found along \envvar{PATH}.) The user can override
525this behavior by setting the environment variable \envvar{PYTHONHOME},
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000526or insert additional directories in front of the standard path by
Fred Drakec6fa34e1998-04-02 06:47:24 +0000527setting \envvar{PYTHONPATH}.
Guido van Rossum59a61351997-08-14 20:34:33 +0000528
Guido van Rossum4a944d71997-08-14 20:35:38 +0000529The embedding application can steer the search by calling
530\code{Py_SetProgramName(\var{file})} \emph{before} calling
Fred Drakec6fa34e1998-04-02 06:47:24 +0000531\cfunction{Py_Initialize()}. Note that \envvar{PYTHONHOME} still
532overrides this and \envvar{PYTHONPATH} is still inserted in front of
Fred Drakee058b4f1998-02-16 06:15:35 +0000533the standard path. An application that requires total control has to
534provide its own implementation of \cfunction{Py_GetPath()},
535\cfunction{Py_GetPrefix()}, \cfunction{Py_GetExecPrefix()},
536\cfunction{Py_GetProgramFullPath()} (all defined in
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000537\file{Modules/getpath.c}).
Guido van Rossum59a61351997-08-14 20:34:33 +0000538
Guido van Rossum4a944d71997-08-14 20:35:38 +0000539Sometimes, it is desirable to ``uninitialize'' Python. For instance,
540the application may want to start over (make another call to
Fred Drakee058b4f1998-02-16 06:15:35 +0000541\cfunction{Py_Initialize()}) or the application is simply done with its
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000542use of Python and wants to free all memory allocated by Python. This
Fred Drakee058b4f1998-02-16 06:15:35 +0000543can be accomplished by calling \cfunction{Py_Finalize()}. The function
544\cfunction{Py_IsInitialized()} returns true iff Python is currently in the
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000545initialized state. More information about these functions is given in
546a later chapter.
Guido van Rossum59a61351997-08-14 20:34:33 +0000547
Guido van Rossum4a944d71997-08-14 20:35:38 +0000548
Fred Drakeefd146c1999-02-15 15:30:45 +0000549\chapter{The Very High Level Layer \label{veryhigh}}
Guido van Rossum4a944d71997-08-14 20:35:38 +0000550
Fred Drakee5bf8b21998-02-12 21:22:28 +0000551The functions in this chapter will let you execute Python source code
552given in a file or a buffer, but they will not let you interact in a
553more detailed way with the interpreter.
Guido van Rossum4a944d71997-08-14 20:35:38 +0000554
Fred Drakec6fa34e1998-04-02 06:47:24 +0000555\begin{cfuncdesc}{int}{PyRun_AnyFile}{FILE *fp, char *filename}
Fred Drake0041a941999-04-29 04:20:46 +0000556 If \var{fp} refers to a file associated with an interactive device
557 (console or terminal input or \UNIX{} pseudo-terminal), return the
558 value of \cfunction{PyRun_InteractiveLoop()}, otherwise return the
559 result of \cfunction{PyRun_SimpleFile()}. If \var{filename} is
560 \NULL{}, use \code{"???"} as the filename.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000561\end{cfuncdesc}
562
Fred Drakec6fa34e1998-04-02 06:47:24 +0000563\begin{cfuncdesc}{int}{PyRun_SimpleString}{char *command}
Fred Drake0041a941999-04-29 04:20:46 +0000564 Executes the Python source code from \var{command} in the
565 \module{__main__} module. If \module{__main__} does not already
566 exist, it is created. Returns \code{0} on success or \code{-1} if
567 an exception was raised. If there was an error, there is no way to
568 get the exception information.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000569\end{cfuncdesc}
570
Fred Drakec6fa34e1998-04-02 06:47:24 +0000571\begin{cfuncdesc}{int}{PyRun_SimpleFile}{FILE *fp, char *filename}
Fred Drake0041a941999-04-29 04:20:46 +0000572 Similar to \cfunction{PyRun_SimpleString()}, but the Python source
573 code is read from \var{fp} instead of an in-memory string.
574 \var{filename} should be the name of the file.
Fred Drakee5bf8b21998-02-12 21:22:28 +0000575\end{cfuncdesc}
576
Fred Drakec6fa34e1998-04-02 06:47:24 +0000577\begin{cfuncdesc}{int}{PyRun_InteractiveOne}{FILE *fp, char *filename}
Fred Drakee5bf8b21998-02-12 21:22:28 +0000578\end{cfuncdesc}
579
Fred Drakec6fa34e1998-04-02 06:47:24 +0000580\begin{cfuncdesc}{int}{PyRun_InteractiveLoop}{FILE *fp, char *filename}
Fred Drakee5bf8b21998-02-12 21:22:28 +0000581\end{cfuncdesc}
582
Fred Drakec6fa34e1998-04-02 06:47:24 +0000583\begin{cfuncdesc}{struct _node*}{PyParser_SimpleParseString}{char *str,
584 int start}
Fred Drake0041a941999-04-29 04:20:46 +0000585 Parse Python source code from \var{str} using the start token
586 \var{start}. The result can be used to create a code object which
587 can be evaluated efficiently. This is useful if a code fragment
588 must be evaluated many times.
Fred Drakee5bf8b21998-02-12 21:22:28 +0000589\end{cfuncdesc}
590
Fred Drakec6fa34e1998-04-02 06:47:24 +0000591\begin{cfuncdesc}{struct _node*}{PyParser_SimpleParseFile}{FILE *fp,
592 char *filename, int start}
Fred Drake0041a941999-04-29 04:20:46 +0000593 Similar to \cfunction{PyParser_SimpleParseString()}, but the Python
594 source code is read from \var{fp} instead of an in-memory string.
595 \var{filename} should be the name of the file.
Fred Drakee5bf8b21998-02-12 21:22:28 +0000596\end{cfuncdesc}
597
Fred Drakec6fa34e1998-04-02 06:47:24 +0000598\begin{cfuncdesc}{PyObject*}{PyRun_String}{char *str, int start,
599 PyObject *globals,
600 PyObject *locals}
Fred Drake0041a941999-04-29 04:20:46 +0000601 Execute Python source code from \var{str} in the context specified
602 by the dictionaries \var{globals} and \var{locals}. The parameter
603 \var{start} specifies the start token that should be used to parse
604 the source code.
605
606 Returns the result of executing the code as a Python object, or
607 \NULL{} if an exception was raised.
Fred Drakee5bf8b21998-02-12 21:22:28 +0000608\end{cfuncdesc}
609
Fred Drakec6fa34e1998-04-02 06:47:24 +0000610\begin{cfuncdesc}{PyObject*}{PyRun_File}{FILE *fp, char *filename,
611 int start, PyObject *globals,
612 PyObject *locals}
Fred Drake0041a941999-04-29 04:20:46 +0000613 Similar to \cfunction{PyRun_String()}, but the Python source code is
614 read from \var{fp} instead of an in-memory string. \var{filename}
615 should be the name of the file.
Fred Drakee5bf8b21998-02-12 21:22:28 +0000616\end{cfuncdesc}
617
Fred Drakec6fa34e1998-04-02 06:47:24 +0000618\begin{cfuncdesc}{PyObject*}{Py_CompileString}{char *str, char *filename,
619 int start}
Fred Drake0041a941999-04-29 04:20:46 +0000620 Parse and compile the Python source code in \var{str}, returning the
621 resulting code object. The start token is given by \var{start};
Fred Drakec924b8d1999-08-23 18:57:25 +0000622 this can be used to constrain the code which can be compiled and should
623 be \constant{Py_eval_input}, \constant{Py_file_input}, or
624 \constant{Py_single_input}. The filename specified by
625 \var{filename} is used to construct the code object and may appear
626 in tracebacks or \exception{SyntaxError} exception messages. This
627 returns \NULL{} if the code cannot be parsed or compiled.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000628\end{cfuncdesc}
629
Fred Drakec924b8d1999-08-23 18:57:25 +0000630\begin{cvardesc}{int}{Py_eval_input}
631 The start symbol from the Python grammar for isolated expressions;
632 for use with \cfunction{Py_CompileString()}.
633\end{cvardesc}
634
635\begin{cvardesc}{int}{Py_file_input}
636 The start symbol from the Python grammar for sequences of statements
637 as read from a file or other source; for use with
638 \cfunction{Py_CompileString()}. This is the symbol to use when
639 compiling arbitrarily long Python source code.
640\end{cvardesc}
641
642\begin{cvardesc}{int}{Py_single_input}
643 The start symbol from the Python grammar for a single statement; for
644 use with \cfunction{Py_CompileString()}. This is the symbol used
645 for the interactive interpreter loop.
646\end{cvardesc}
647
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000648
Fred Drakeefd146c1999-02-15 15:30:45 +0000649\chapter{Reference Counting \label{countingRefs}}
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000650
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000651The macros in this section are used for managing reference counts
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000652of Python objects.
653
654\begin{cfuncdesc}{void}{Py_INCREF}{PyObject *o}
Fred Drakec6fa34e1998-04-02 06:47:24 +0000655Increment the reference count for object \var{o}. The object must
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000656not be \NULL{}; if you aren't sure that it isn't \NULL{}, use
Fred Drakee058b4f1998-02-16 06:15:35 +0000657\cfunction{Py_XINCREF()}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000658\end{cfuncdesc}
659
660\begin{cfuncdesc}{void}{Py_XINCREF}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +0000661Increment the reference count for object \var{o}. The object may be
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000662\NULL{}, in which case the macro has no effect.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000663\end{cfuncdesc}
664
665\begin{cfuncdesc}{void}{Py_DECREF}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +0000666Decrement the reference count for object \var{o}. The object must
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000667not be \NULL{}; if you aren't sure that it isn't \NULL{}, use
Fred Drakee058b4f1998-02-16 06:15:35 +0000668\cfunction{Py_XDECREF()}. If the reference count reaches zero, the
669object's type's deallocation function (which must not be \NULL{}) is
670invoked.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000671
672\strong{Warning:} The deallocation function can cause arbitrary Python
Fred Drakee058b4f1998-02-16 06:15:35 +0000673code to be invoked (e.g. when a class instance with a \method{__del__()}
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000674method is deallocated). While exceptions in such code are not
675propagated, the executed code has free access to all Python global
676variables. This means that any object that is reachable from a global
Fred Drakee058b4f1998-02-16 06:15:35 +0000677variable should be in a consistent state before \cfunction{Py_DECREF()} is
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000678invoked. For example, code to delete an object from a list should
679copy a reference to the deleted object in a temporary variable, update
Fred Drakee058b4f1998-02-16 06:15:35 +0000680the list data structure, and then call \cfunction{Py_DECREF()} for the
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000681temporary variable.
682\end{cfuncdesc}
683
684\begin{cfuncdesc}{void}{Py_XDECREF}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +0000685Decrement the reference count for object \var{o}. The object may be
686\NULL{}, in which case the macro has no effect; otherwise the effect
687is the same as for \cfunction{Py_DECREF()}, and the same warning
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000688applies.
689\end{cfuncdesc}
690
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000691The following functions or macros are only for internal use:
Fred Drakee058b4f1998-02-16 06:15:35 +0000692\cfunction{_Py_Dealloc()}, \cfunction{_Py_ForgetReference()},
693\cfunction{_Py_NewReference()}, as well as the global variable
Fred Drakef8830d11998-04-23 14:06:01 +0000694\cdata{_Py_RefTotal}.
Guido van Rossumae110af1997-05-22 20:11:52 +0000695
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000696XXX Should mention Py_Malloc(), Py_Realloc(), Py_Free(),
697PyMem_Malloc(), PyMem_Realloc(), PyMem_Free(), PyMem_NEW(),
698PyMem_RESIZE(), PyMem_DEL(), PyMem_XDEL().
699
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000700
Fred Drakeefd146c1999-02-15 15:30:45 +0000701\chapter{Exception Handling \label{exceptionHandling}}
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000702
703The functions in this chapter will let you handle and raise Python
Guido van Rossumae110af1997-05-22 20:11:52 +0000704exceptions. It is important to understand some of the basics of
Fred Drakeb0a78731998-01-13 18:51:10 +0000705Python exception handling. It works somewhat like the \UNIX{}
Fred Drakef8830d11998-04-23 14:06:01 +0000706\cdata{errno} variable: there is a global indicator (per thread) of the
Guido van Rossumae110af1997-05-22 20:11:52 +0000707last error that occurred. Most functions don't clear this on success,
708but will set it to indicate the cause of the error on failure. Most
709functions also return an error indicator, usually \NULL{} if they are
Fred Drakee058b4f1998-02-16 06:15:35 +0000710supposed to return a pointer, or \code{-1} if they return an integer
Fred Drakef8830d11998-04-23 14:06:01 +0000711(exception: the \cfunction{PyArg_Parse*()} functions return \code{1} for
Fred Drakee058b4f1998-02-16 06:15:35 +0000712success and \code{0} for failure). When a function must fail because
713some function it called failed, it generally doesn't set the error
714indicator; the function it called already set it.
Guido van Rossumae110af1997-05-22 20:11:52 +0000715
716The error indicator consists of three Python objects corresponding to
717the Python variables \code{sys.exc_type}, \code{sys.exc_value} and
718\code{sys.exc_traceback}. API functions exist to interact with the
719error indicator in various ways. There is a separate error indicator
720for each thread.
721
722% XXX Order of these should be more thoughtful.
723% Either alphabetical or some kind of structure.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000724
725\begin{cfuncdesc}{void}{PyErr_Print}{}
Guido van Rossumae110af1997-05-22 20:11:52 +0000726Print a standard traceback to \code{sys.stderr} and clear the error
727indicator. Call this function only when the error indicator is set.
728(Otherwise it will cause a fatal error!)
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000729\end{cfuncdesc}
730
Fred Drakec6fa34e1998-04-02 06:47:24 +0000731\begin{cfuncdesc}{PyObject*}{PyErr_Occurred}{}
Guido van Rossumae110af1997-05-22 20:11:52 +0000732Test whether the error indicator is set. If set, return the exception
Fred Drakee058b4f1998-02-16 06:15:35 +0000733\emph{type} (the first argument to the last call to one of the
Fred Drakef8830d11998-04-23 14:06:01 +0000734\cfunction{PyErr_Set*()} functions or to \cfunction{PyErr_Restore()}). If
Fred Drakee058b4f1998-02-16 06:15:35 +0000735not set, return \NULL{}. You do not own a reference to the return
736value, so you do not need to \cfunction{Py_DECREF()} it.
737\strong{Note:} do not compare the return value to a specific
738exception; use \cfunction{PyErr_ExceptionMatches()} instead, shown
739below.
Guido van Rossum42cefd01997-10-05 15:27:29 +0000740\end{cfuncdesc}
741
742\begin{cfuncdesc}{int}{PyErr_ExceptionMatches}{PyObject *exc}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000743Equivalent to
Fred Drakee058b4f1998-02-16 06:15:35 +0000744\samp{PyErr_GivenExceptionMatches(PyErr_Occurred(), \var{exc})}.
Guido van Rossum42cefd01997-10-05 15:27:29 +0000745This should only be called when an exception is actually set.
746\end{cfuncdesc}
747
748\begin{cfuncdesc}{int}{PyErr_GivenExceptionMatches}{PyObject *given, PyObject *exc}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000749Return true if the \var{given} exception matches the exception in
750\var{exc}. If \var{exc} is a class object, this also returns true
751when \var{given} is a subclass. If \var{exc} is a tuple, all
752exceptions in the tuple (and recursively in subtuples) are searched
753for a match. This should only be called when an exception is actually
754set.
755\end{cfuncdesc}
756
757\begin{cfuncdesc}{void}{PyErr_NormalizeException}{PyObject**exc, PyObject**val, PyObject**tb}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000758Under certain circumstances, the values returned by
Fred Drakee058b4f1998-02-16 06:15:35 +0000759\cfunction{PyErr_Fetch()} below can be ``unnormalized'', meaning that
760\code{*\var{exc}} is a class object but \code{*\var{val}} is not an
761instance of the same class. This function can be used to instantiate
762the class in that case. If the values are already normalized, nothing
763happens.
Guido van Rossumae110af1997-05-22 20:11:52 +0000764\end{cfuncdesc}
765
766\begin{cfuncdesc}{void}{PyErr_Clear}{}
767Clear the error indicator. If the error indicator is not set, there
768is no effect.
769\end{cfuncdesc}
770
771\begin{cfuncdesc}{void}{PyErr_Fetch}{PyObject **ptype, PyObject **pvalue, PyObject **ptraceback}
772Retrieve the error indicator into three variables whose addresses are
773passed. If the error indicator is not set, set all three variables to
774\NULL{}. If it is set, it will be cleared and you own a reference to
775each object retrieved. The value and traceback object may be \NULL{}
776even when the type object is not. \strong{Note:} this function is
777normally only used by code that needs to handle exceptions or by code
778that needs to save and restore the error indicator temporarily.
779\end{cfuncdesc}
780
781\begin{cfuncdesc}{void}{PyErr_Restore}{PyObject *type, PyObject *value, PyObject *traceback}
782Set the error indicator from the three objects. If the error
783indicator is already set, it is cleared first. If the objects are
784\NULL{}, the error indicator is cleared. Do not pass a \NULL{} type
785and non-\NULL{} value or traceback. The exception type should be a
786string or class; if it is a class, the value should be an instance of
787that class. Do not pass an invalid exception type or value.
788(Violating these rules will cause subtle problems later.) This call
789takes away a reference to each object, i.e. you must own a reference
790to each object before the call and after the call you no longer own
791these references. (If you don't understand this, don't use this
792function. I warned you.) \strong{Note:} this function is normally
793only used by code that needs to save and restore the error indicator
794temporarily.
795\end{cfuncdesc}
796
797\begin{cfuncdesc}{void}{PyErr_SetString}{PyObject *type, char *message}
798This is the most common way to set the error indicator. The first
799argument specifies the exception type; it is normally one of the
Fred Drakef8830d11998-04-23 14:06:01 +0000800standard exceptions, e.g. \cdata{PyExc_RuntimeError}. You need not
Guido van Rossumae110af1997-05-22 20:11:52 +0000801increment its reference count. The second argument is an error
802message; it is converted to a string object.
803\end{cfuncdesc}
804
805\begin{cfuncdesc}{void}{PyErr_SetObject}{PyObject *type, PyObject *value}
Fred Drakee058b4f1998-02-16 06:15:35 +0000806This function is similar to \cfunction{PyErr_SetString()} but lets you
Guido van Rossumae110af1997-05-22 20:11:52 +0000807specify an arbitrary Python object for the ``value'' of the exception.
808You need not increment its reference count.
809\end{cfuncdesc}
810
811\begin{cfuncdesc}{void}{PyErr_SetNone}{PyObject *type}
Fred Drakee058b4f1998-02-16 06:15:35 +0000812This is a shorthand for \samp{PyErr_SetObject(\var{type}, Py_None)}.
Guido van Rossumae110af1997-05-22 20:11:52 +0000813\end{cfuncdesc}
814
815\begin{cfuncdesc}{int}{PyErr_BadArgument}{}
Fred Drakee058b4f1998-02-16 06:15:35 +0000816This is a shorthand for \samp{PyErr_SetString(PyExc_TypeError,
Guido van Rossumae110af1997-05-22 20:11:52 +0000817\var{message})}, where \var{message} indicates that a built-in operation
818was invoked with an illegal argument. It is mostly for internal use.
819\end{cfuncdesc}
820
Fred Drakec6fa34e1998-04-02 06:47:24 +0000821\begin{cfuncdesc}{PyObject*}{PyErr_NoMemory}{}
Fred Drakee058b4f1998-02-16 06:15:35 +0000822This is a shorthand for \samp{PyErr_SetNone(PyExc_MemoryError)}; it
Guido van Rossumae110af1997-05-22 20:11:52 +0000823returns \NULL{} so an object allocation function can write
Fred Drakee058b4f1998-02-16 06:15:35 +0000824\samp{return PyErr_NoMemory();} when it runs out of memory.
Guido van Rossumae110af1997-05-22 20:11:52 +0000825\end{cfuncdesc}
826
Fred Drakec6fa34e1998-04-02 06:47:24 +0000827\begin{cfuncdesc}{PyObject*}{PyErr_SetFromErrno}{PyObject *type}
Fred Drakeb0a78731998-01-13 18:51:10 +0000828This is a convenience function to raise an exception when a \C{} library
Fred Drakef8830d11998-04-23 14:06:01 +0000829function has returned an error and set the \C{} variable \cdata{errno}.
Guido van Rossumae110af1997-05-22 20:11:52 +0000830It constructs a tuple object whose first item is the integer
Fred Drakef8830d11998-04-23 14:06:01 +0000831\cdata{errno} value and whose second item is the corresponding error
Fred Drakee058b4f1998-02-16 06:15:35 +0000832message (gotten from \cfunction{strerror()}), and then calls
833\samp{PyErr_SetObject(\var{type}, \var{object})}. On \UNIX{}, when
Fred Drakef8830d11998-04-23 14:06:01 +0000834the \cdata{errno} value is \constant{EINTR}, indicating an interrupted
Fred Drakee058b4f1998-02-16 06:15:35 +0000835system call, this calls \cfunction{PyErr_CheckSignals()}, and if that set
Guido van Rossumae110af1997-05-22 20:11:52 +0000836the error indicator, leaves it set to that. The function always
837returns \NULL{}, so a wrapper function around a system call can write
Fred Drakee058b4f1998-02-16 06:15:35 +0000838\samp{return PyErr_SetFromErrno();} when the system call returns an
839error.
Guido van Rossumae110af1997-05-22 20:11:52 +0000840\end{cfuncdesc}
841
842\begin{cfuncdesc}{void}{PyErr_BadInternalCall}{}
Fred Drakee058b4f1998-02-16 06:15:35 +0000843This is a shorthand for \samp{PyErr_SetString(PyExc_TypeError,
Guido van Rossumae110af1997-05-22 20:11:52 +0000844\var{message})}, where \var{message} indicates that an internal
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000845operation (e.g. a Python/C API function) was invoked with an illegal
Guido van Rossumae110af1997-05-22 20:11:52 +0000846argument. It is mostly for internal use.
847\end{cfuncdesc}
848
849\begin{cfuncdesc}{int}{PyErr_CheckSignals}{}
850This function interacts with Python's signal handling. It checks
851whether a signal has been sent to the processes and if so, invokes the
Fred Drake4de05a91998-02-16 14:25:26 +0000852corresponding signal handler. If the
853\module{signal}\refbimodindex{signal} module is supported, this can
854invoke a signal handler written in Python. In all cases, the default
855effect for \constant{SIGINT} is to raise the
856\exception{KeyboadInterrupt} exception. If an exception is raised the
Fred Drakee058b4f1998-02-16 06:15:35 +0000857error indicator is set and the function returns \code{1}; otherwise
858the function returns \code{0}. The error indicator may or may not be
859cleared if it was previously set.
Guido van Rossumae110af1997-05-22 20:11:52 +0000860\end{cfuncdesc}
861
862\begin{cfuncdesc}{void}{PyErr_SetInterrupt}{}
863This function is obsolete (XXX or platform dependent?). It simulates
Fred Drakee058b4f1998-02-16 06:15:35 +0000864the effect of a \constant{SIGINT} signal arriving --- the next time
865\cfunction{PyErr_CheckSignals()} is called,
866\exception{KeyboadInterrupt} will be raised.
Guido van Rossumae110af1997-05-22 20:11:52 +0000867\end{cfuncdesc}
868
Fred Drakec6fa34e1998-04-02 06:47:24 +0000869\begin{cfuncdesc}{PyObject*}{PyErr_NewException}{char *name,
870 PyObject *base,
871 PyObject *dict}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000872This utility function creates and returns a new exception object. The
Fred Drakeb0a78731998-01-13 18:51:10 +0000873\var{name} argument must be the name of the new exception, a \C{} string
Guido van Rossum42cefd01997-10-05 15:27:29 +0000874of the form \code{module.class}. The \var{base} and \var{dict}
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000875arguments are normally \NULL{}. Normally, this creates a class
Guido van Rossum42cefd01997-10-05 15:27:29 +0000876object derived from the root for all exceptions, the built-in name
Fred Drakebe486461999-11-09 17:03:03 +0000877\exception{Exception} (accessible in C as \cdata{PyExc_Exception}).
Fred Drakef8830d11998-04-23 14:06:01 +0000878In this case the \member{__module__} attribute of the new class is set to the
Guido van Rossum42cefd01997-10-05 15:27:29 +0000879first part (up to the last dot) of the \var{name} argument, and the
880class name is set to the last part (after the last dot). When the
Fred Drakebe486461999-11-09 17:03:03 +0000881user has specified the \programopt{-X} command line option to use string
Guido van Rossum42cefd01997-10-05 15:27:29 +0000882exceptions, for backward compatibility, or when the \var{base}
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000883argument is not a class object (and not \NULL{}), a string object
Guido van Rossum42cefd01997-10-05 15:27:29 +0000884created from the entire \var{name} argument is returned. The
885\var{base} argument can be used to specify an alternate base class.
886The \var{dict} argument can be used to specify a dictionary of class
887variables and methods.
888\end{cfuncdesc}
889
890
Fred Drakeefd146c1999-02-15 15:30:45 +0000891\section{Standard Exceptions \label{standardExceptions}}
Guido van Rossumae110af1997-05-22 20:11:52 +0000892
893All standard Python exceptions are available as global variables whose
Fred Drakebe486461999-11-09 17:03:03 +0000894names are \samp{PyExc_} followed by the Python exception name. These
895have the type \ctype{PyObject *}; they are all either class objects or
896string objects, depending on the use of the \programopt{-X} option to the
897interpreter. For completeness, here are all the variables:
Fred Drakef8830d11998-04-23 14:06:01 +0000898\cdata{PyExc_Exception},
899\cdata{PyExc_StandardError},
900\cdata{PyExc_ArithmeticError},
901\cdata{PyExc_LookupError},
902\cdata{PyExc_AssertionError},
903\cdata{PyExc_AttributeError},
904\cdata{PyExc_EOFError},
Fred Drake127ed0a1999-02-17 23:09:05 +0000905\cdata{PyExc_EnvironmentError},
Fred Drakef8830d11998-04-23 14:06:01 +0000906\cdata{PyExc_FloatingPointError},
907\cdata{PyExc_IOError},
908\cdata{PyExc_ImportError},
909\cdata{PyExc_IndexError},
910\cdata{PyExc_KeyError},
911\cdata{PyExc_KeyboardInterrupt},
912\cdata{PyExc_MemoryError},
913\cdata{PyExc_NameError},
Fred Drake127ed0a1999-02-17 23:09:05 +0000914\cdata{PyExc_NotImplementedError},
915\cdata{PyExc_OSError},
Fred Drakef8830d11998-04-23 14:06:01 +0000916\cdata{PyExc_OverflowError},
917\cdata{PyExc_RuntimeError},
918\cdata{PyExc_SyntaxError},
919\cdata{PyExc_SystemError},
920\cdata{PyExc_SystemExit},
921\cdata{PyExc_TypeError},
922\cdata{PyExc_ValueError},
923\cdata{PyExc_ZeroDivisionError}.
Guido van Rossumae110af1997-05-22 20:11:52 +0000924
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000925
Fred Drakeefd146c1999-02-15 15:30:45 +0000926\chapter{Utilities \label{utilities}}
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000927
928The functions in this chapter perform various utility tasks, such as
Fred Drakeb0a78731998-01-13 18:51:10 +0000929parsing function arguments and constructing Python values from \C{}
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000930values.
931
Fred Drakeefd146c1999-02-15 15:30:45 +0000932\section{OS Utilities \label{os}}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000933
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000934\begin{cfuncdesc}{int}{Py_FdIsInteractive}{FILE *fp, char *filename}
Fred Drakee058b4f1998-02-16 06:15:35 +0000935Return true (nonzero) if the standard I/O file \var{fp} with name
936\var{filename} is deemed interactive. This is the case for files for
937which \samp{isatty(fileno(\var{fp}))} is true. If the global flag
Fred Drakef8830d11998-04-23 14:06:01 +0000938\cdata{Py_InteractiveFlag} is true, this function also returns true if
Fred Drakee058b4f1998-02-16 06:15:35 +0000939the \var{name} pointer is \NULL{} or if the name is equal to one of
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000940the strings \code{"<stdin>"} or \code{"???"}.
941\end{cfuncdesc}
942
943\begin{cfuncdesc}{long}{PyOS_GetLastModificationTime}{char *filename}
Fred Drakee058b4f1998-02-16 06:15:35 +0000944Return the time of last modification of the file \var{filename}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000945The result is encoded in the same way as the timestamp returned by
Fred Drakee058b4f1998-02-16 06:15:35 +0000946the standard \C{} library function \cfunction{time()}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000947\end{cfuncdesc}
948
949
Fred Drakeefd146c1999-02-15 15:30:45 +0000950\section{Process Control \label{processControl}}
Fred Drakee5bf8b21998-02-12 21:22:28 +0000951
952\begin{cfuncdesc}{void}{Py_FatalError}{char *message}
953Print a fatal error message and kill the process. No cleanup is
954performed. This function should only be invoked when a condition is
955detected that would make it dangerous to continue using the Python
956interpreter; e.g., when the object administration appears to be
Fred Drakee058b4f1998-02-16 06:15:35 +0000957corrupted. On \UNIX{}, the standard \C{} library function
958\cfunction{abort()} is called which will attempt to produce a
959\file{core} file.
Fred Drakee5bf8b21998-02-12 21:22:28 +0000960\end{cfuncdesc}
961
962\begin{cfuncdesc}{void}{Py_Exit}{int status}
Fred Drakee058b4f1998-02-16 06:15:35 +0000963Exit the current process. This calls \cfunction{Py_Finalize()} and
964then calls the standard \C{} library function
965\code{exit(\var{status})}.
Fred Drakee5bf8b21998-02-12 21:22:28 +0000966\end{cfuncdesc}
967
968\begin{cfuncdesc}{int}{Py_AtExit}{void (*func) ()}
969Register a cleanup function to be called by \cfunction{Py_Finalize()}.
970The cleanup function will be called with no arguments and should
971return no value. At most 32 cleanup functions can be registered.
972When the registration is successful, \cfunction{Py_AtExit()} returns
973\code{0}; on failure, it returns \code{-1}. The cleanup function
974registered last is called first. Each cleanup function will be called
975at most once. Since Python's internal finallization will have
976completed before the cleanup function, no Python APIs should be called
977by \var{func}.
978\end{cfuncdesc}
979
980
Fred Drakeefd146c1999-02-15 15:30:45 +0000981\section{Importing Modules \label{importing}}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000982
Fred Drakec6fa34e1998-04-02 06:47:24 +0000983\begin{cfuncdesc}{PyObject*}{PyImport_ImportModule}{char *name}
Fred Drakee058b4f1998-02-16 06:15:35 +0000984This is a simplified interface to \cfunction{PyImport_ImportModuleEx()}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000985below, leaving the \var{globals} and \var{locals} arguments set to
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000986\NULL{}. When the \var{name} argument contains a dot (i.e., when
Guido van Rossum42cefd01997-10-05 15:27:29 +0000987it specifies a submodule of a package), the \var{fromlist} argument is
988set to the list \code{['*']} so that the return value is the named
989module rather than the top-level package containing it as would
990otherwise be the case. (Unfortunately, this has an additional side
991effect when \var{name} in fact specifies a subpackage instead of a
992submodule: the submodules specified in the package's \code{__all__}
993variable are loaded.) Return a new reference to the imported module,
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000994or \NULL{} with an exception set on failure (the module may still
Fred Drakec6fa34e1998-04-02 06:47:24 +0000995be created in this case --- examine \code{sys.modules} to find out).
Guido van Rossum42cefd01997-10-05 15:27:29 +0000996\end{cfuncdesc}
997
Fred Drakec6fa34e1998-04-02 06:47:24 +0000998\begin{cfuncdesc}{PyObject*}{PyImport_ImportModuleEx}{char *name, PyObject *globals, PyObject *locals, PyObject *fromlist}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000999Import a module. This is best described by referring to the built-in
Fred Drake53fb7721998-02-16 06:23:20 +00001000Python function \function{__import__()}\bifuncindex{__import__}, as
1001the standard \function{__import__()} function calls this function
1002directly.
Guido van Rossum42cefd01997-10-05 15:27:29 +00001003
Guido van Rossum42cefd01997-10-05 15:27:29 +00001004The return value is a new reference to the imported module or
Guido van Rossum580aa8d1997-11-25 15:34:51 +00001005top-level package, or \NULL{} with an exception set on failure
Guido van Rossumc44d3d61997-10-06 05:10:47 +00001006(the module may still be created in this case). Like for
Fred Drakee058b4f1998-02-16 06:15:35 +00001007\function{__import__()}, the return value when a submodule of a
1008package was requested is normally the top-level package, unless a
1009non-empty \var{fromlist} was given.
Guido van Rossum42cefd01997-10-05 15:27:29 +00001010\end{cfuncdesc}
1011
Fred Drakec6fa34e1998-04-02 06:47:24 +00001012\begin{cfuncdesc}{PyObject*}{PyImport_Import}{PyObject *name}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001013This is a higher-level interface that calls the current ``import hook
Fred Drakee058b4f1998-02-16 06:15:35 +00001014function''. It invokes the \function{__import__()} function from the
Guido van Rossum42cefd01997-10-05 15:27:29 +00001015\code{__builtins__} of the current globals. This means that the
1016import is done using whatever import hooks are installed in the
Fred Drake4de05a91998-02-16 14:25:26 +00001017current environment, e.g. by \module{rexec}\refstmodindex{rexec} or
1018\module{ihooks}\refstmodindex{ihooks}.
Guido van Rossum42cefd01997-10-05 15:27:29 +00001019\end{cfuncdesc}
1020
Fred Drakec6fa34e1998-04-02 06:47:24 +00001021\begin{cfuncdesc}{PyObject*}{PyImport_ReloadModule}{PyObject *m}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001022Reload a module. This is best described by referring to the built-in
Fred Drake53fb7721998-02-16 06:23:20 +00001023Python function \function{reload()}\bifuncindex{reload}, as the standard
Fred Drakee058b4f1998-02-16 06:15:35 +00001024\function{reload()} function calls this function directly. Return a
1025new reference to the reloaded module, or \NULL{} with an exception set
1026on failure (the module still exists in this case).
Guido van Rossum42cefd01997-10-05 15:27:29 +00001027\end{cfuncdesc}
1028
Fred Drakec6fa34e1998-04-02 06:47:24 +00001029\begin{cfuncdesc}{PyObject*}{PyImport_AddModule}{char *name}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001030Return the module object corresponding to a module name. The
1031\var{name} argument may be of the form \code{package.module}). First
1032check the modules dictionary if there's one there, and if not, create
1033a new one and insert in in the modules dictionary. Because the former
1034action is most common, this does not return a new reference, and you
Guido van Rossuma096a2e1998-11-02 17:02:42 +00001035do not own the returned reference.
1036Warning: this function does not load or import the module; if the
1037module wasn't already loaded, you will get an empty module object.
1038Use \cfunction{PyImport_ImportModule()} or one of its variants to
1039import a module.
1040Return \NULL{} with an
Fred Drakef8830d11998-04-23 14:06:01 +00001041exception set on failure. \strong{Note:} this function returns
Guido van Rossum44475131998-04-21 15:30:01 +00001042a ``borrowed'' reference.
Guido van Rossum42cefd01997-10-05 15:27:29 +00001043\end{cfuncdesc}
1044
Fred Drakec6fa34e1998-04-02 06:47:24 +00001045\begin{cfuncdesc}{PyObject*}{PyImport_ExecCodeModule}{char *name, PyObject *co}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001046Given a module name (possibly of the form \code{package.module}) and a
1047code object read from a Python bytecode file or obtained from the
Fred Drake53fb7721998-02-16 06:23:20 +00001048built-in function \function{compile()}\bifuncindex{compile}, load the
1049module. Return a new reference to the module object, or \NULL{} with
1050an exception set if an error occurred (the module may still be created
1051in this case). (This function would reload the module if it was
1052already imported.)
Guido van Rossum42cefd01997-10-05 15:27:29 +00001053\end{cfuncdesc}
1054
1055\begin{cfuncdesc}{long}{PyImport_GetMagicNumber}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00001056Return the magic number for Python bytecode files (a.k.a. \file{.pyc}
1057and \file{.pyo} files). The magic number should be present in the
Guido van Rossum42cefd01997-10-05 15:27:29 +00001058first four bytes of the bytecode file, in little-endian byte order.
1059\end{cfuncdesc}
1060
Fred Drakec6fa34e1998-04-02 06:47:24 +00001061\begin{cfuncdesc}{PyObject*}{PyImport_GetModuleDict}{}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001062Return the dictionary used for the module administration
1063(a.k.a. \code{sys.modules}). Note that this is a per-interpreter
1064variable.
1065\end{cfuncdesc}
1066
1067\begin{cfuncdesc}{void}{_PyImport_Init}{}
1068Initialize the import mechanism. For internal use only.
1069\end{cfuncdesc}
1070
1071\begin{cfuncdesc}{void}{PyImport_Cleanup}{}
1072Empty the module table. For internal use only.
1073\end{cfuncdesc}
1074
1075\begin{cfuncdesc}{void}{_PyImport_Fini}{}
1076Finalize the import mechanism. For internal use only.
1077\end{cfuncdesc}
1078
Fred Drakec6fa34e1998-04-02 06:47:24 +00001079\begin{cfuncdesc}{PyObject*}{_PyImport_FindExtension}{char *, char *}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001080For internal use only.
Guido van Rossum5b8a5231997-12-30 04:38:44 +00001081\end{cfuncdesc}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001082
Fred Drakec6fa34e1998-04-02 06:47:24 +00001083\begin{cfuncdesc}{PyObject*}{_PyImport_FixupExtension}{char *, char *}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001084For internal use only.
Guido van Rossum5b8a5231997-12-30 04:38:44 +00001085\end{cfuncdesc}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001086
1087\begin{cfuncdesc}{int}{PyImport_ImportFrozenModule}{char *}
1088Load a frozen module. Return \code{1} for success, \code{0} if the
1089module is not found, and \code{-1} with an exception set if the
1090initialization failed. To access the imported module on a successful
Fred Drakee058b4f1998-02-16 06:15:35 +00001091load, use \cfunction{PyImport_ImportModule()}.
1092(Note the misnomer --- this function would reload the module if it was
Guido van Rossum42cefd01997-10-05 15:27:29 +00001093already imported.)
1094\end{cfuncdesc}
1095
1096\begin{ctypedesc}{struct _frozen}
1097This is the structure type definition for frozen module descriptors,
Fred Drakec6fa34e1998-04-02 06:47:24 +00001098as generated by the \program{freeze}\index{freeze utility} utility
1099(see \file{Tools/freeze/} in the Python source distribution). Its
1100definition is:
1101
Guido van Rossum9faf4c51997-10-07 14:38:54 +00001102\begin{verbatim}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001103struct _frozen {
Fred Drake36fbe761997-10-13 18:18:33 +00001104 char *name;
1105 unsigned char *code;
1106 int size;
Guido van Rossum42cefd01997-10-05 15:27:29 +00001107};
Guido van Rossum9faf4c51997-10-07 14:38:54 +00001108\end{verbatim}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001109\end{ctypedesc}
1110
Fred Drakec6fa34e1998-04-02 06:47:24 +00001111\begin{cvardesc}{struct _frozen*}{PyImport_FrozenModules}
Fred Drakef8830d11998-04-23 14:06:01 +00001112This pointer is initialized to point to an array of \ctype{struct
Guido van Rossum580aa8d1997-11-25 15:34:51 +00001113_frozen} records, terminated by one whose members are all \NULL{}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001114or zero. When a frozen module is imported, it is searched in this
Fred Drakec6fa34e1998-04-02 06:47:24 +00001115table. Third-party code could play tricks with this to provide a
Guido van Rossum42cefd01997-10-05 15:27:29 +00001116dynamically created collection of frozen modules.
1117\end{cvardesc}
1118
1119
Fred Drakeefd146c1999-02-15 15:30:45 +00001120\chapter{Abstract Objects Layer \label{abstract}}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001121
1122The functions in this chapter interact with Python objects regardless
1123of their type, or with wide classes of object types (e.g. all
1124numerical types, or all sequence types). When used on object types
1125for which they do not apply, they will flag a Python exception.
1126
Fred Drakeefd146c1999-02-15 15:30:45 +00001127\section{Object Protocol \label{object}}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001128
1129\begin{cfuncdesc}{int}{PyObject_Print}{PyObject *o, FILE *fp, int flags}
Fred Drakee058b4f1998-02-16 06:15:35 +00001130Print an object \var{o}, on file \var{fp}. Returns \code{-1} on error
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001131The flags argument is used to enable certain printing
Fred Drakee058b4f1998-02-16 06:15:35 +00001132options. The only option currently supported is
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001133\constant{Py_PRINT_RAW}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001134\end{cfuncdesc}
1135
1136\begin{cfuncdesc}{int}{PyObject_HasAttrString}{PyObject *o, char *attr_name}
Fred Drakee058b4f1998-02-16 06:15:35 +00001137Returns \code{1} if \var{o} has the attribute \var{attr_name}, and
1138\code{0} otherwise. This is equivalent to the Python expression
1139\samp{hasattr(\var{o}, \var{attr_name})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001140This function always succeeds.
1141\end{cfuncdesc}
1142
1143\begin{cfuncdesc}{PyObject*}{PyObject_GetAttrString}{PyObject *o, char *attr_name}
Fred Drakee058b4f1998-02-16 06:15:35 +00001144Retrieve an attribute named \var{attr_name} from object \var{o}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001145Returns the attribute value on success, or \NULL{} on failure.
Fred Drakee058b4f1998-02-16 06:15:35 +00001146This is the equivalent of the Python expression
1147\samp{\var{o}.\var{attr_name}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001148\end{cfuncdesc}
1149
1150
1151\begin{cfuncdesc}{int}{PyObject_HasAttr}{PyObject *o, PyObject *attr_name}
Fred Drakee058b4f1998-02-16 06:15:35 +00001152Returns \code{1} if \var{o} has the attribute \var{attr_name}, and
1153\code{0} otherwise. This is equivalent to the Python expression
1154\samp{hasattr(\var{o}, \var{attr_name})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001155This function always succeeds.
1156\end{cfuncdesc}
1157
1158
1159\begin{cfuncdesc}{PyObject*}{PyObject_GetAttr}{PyObject *o, PyObject *attr_name}
Fred Drakee058b4f1998-02-16 06:15:35 +00001160Retrieve an attribute named \var{attr_name} from object \var{o}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001161Returns the attribute value on success, or \NULL{} on failure.
Fred Drakee058b4f1998-02-16 06:15:35 +00001162This is the equivalent of the Python expression
1163\samp{\var{o}.\var{attr_name}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001164\end{cfuncdesc}
1165
1166
1167\begin{cfuncdesc}{int}{PyObject_SetAttrString}{PyObject *o, char *attr_name, PyObject *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001168Set the value of the attribute named \var{attr_name}, for object
1169\var{o}, to the value \var{v}. Returns \code{-1} on failure. This is
1170the equivalent of the Python statement \samp{\var{o}.\var{attr_name} =
1171\var{v}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001172\end{cfuncdesc}
1173
1174
1175\begin{cfuncdesc}{int}{PyObject_SetAttr}{PyObject *o, PyObject *attr_name, PyObject *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001176Set the value of the attribute named \var{attr_name}, for
1177object \var{o},
1178to the value \var{v}. Returns \code{-1} on failure. This is
1179the equivalent of the Python statement \samp{\var{o}.\var{attr_name} =
1180\var{v}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001181\end{cfuncdesc}
1182
1183
1184\begin{cfuncdesc}{int}{PyObject_DelAttrString}{PyObject *o, char *attr_name}
Fred Drakee058b4f1998-02-16 06:15:35 +00001185Delete attribute named \var{attr_name}, for object \var{o}. Returns
1186\code{-1} on failure. This is the equivalent of the Python
1187statement: \samp{del \var{o}.\var{attr_name}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001188\end{cfuncdesc}
1189
1190
1191\begin{cfuncdesc}{int}{PyObject_DelAttr}{PyObject *o, PyObject *attr_name}
Fred Drakee058b4f1998-02-16 06:15:35 +00001192Delete attribute named \var{attr_name}, for object \var{o}. Returns
1193\code{-1} on failure. This is the equivalent of the Python
1194statement \samp{del \var{o}.\var{attr_name}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001195\end{cfuncdesc}
1196
1197
1198\begin{cfuncdesc}{int}{PyObject_Cmp}{PyObject *o1, PyObject *o2, int *result}
Fred Drakee058b4f1998-02-16 06:15:35 +00001199Compare the values of \var{o1} and \var{o2} using a routine provided
1200by \var{o1}, if one exists, otherwise with a routine provided by
1201\var{o2}. The result of the comparison is returned in \var{result}.
1202Returns \code{-1} on failure. This is the equivalent of the Python
1203statement \samp{\var{result} = cmp(\var{o1}, \var{o2})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001204\end{cfuncdesc}
1205
1206
1207\begin{cfuncdesc}{int}{PyObject_Compare}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001208Compare the values of \var{o1} and \var{o2} using a routine provided
1209by \var{o1}, if one exists, otherwise with a routine provided by
1210\var{o2}. Returns the result of the comparison on success. On error,
1211the value returned is undefined; use \cfunction{PyErr_Occurred()} to
1212detect an error. This is equivalent to the
1213Python expression \samp{cmp(\var{o1}, \var{o2})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001214\end{cfuncdesc}
1215
1216
1217\begin{cfuncdesc}{PyObject*}{PyObject_Repr}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001218Compute the string representation of object, \var{o}. Returns the
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001219string representation on success, \NULL{} on failure. This is
Fred Drakee058b4f1998-02-16 06:15:35 +00001220the equivalent of the Python expression \samp{repr(\var{o})}.
1221Called by the \function{repr()}\bifuncindex{repr} built-in function
1222and by reverse quotes.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001223\end{cfuncdesc}
1224
1225
1226\begin{cfuncdesc}{PyObject*}{PyObject_Str}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001227Compute the string representation of object \var{o}. Returns the
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001228string representation on success, \NULL{} on failure. This is
Fred Drakee058b4f1998-02-16 06:15:35 +00001229the equivalent of the Python expression \samp{str(\var{o})}.
1230Called by the \function{str()}\bifuncindex{str} built-in function and
1231by the \keyword{print} statement.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001232\end{cfuncdesc}
1233
1234
1235\begin{cfuncdesc}{int}{PyCallable_Check}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001236Determine if the object \var{o}, is callable. Return \code{1} if the
1237object is callable and \code{0} otherwise.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001238This function always succeeds.
1239\end{cfuncdesc}
1240
1241
1242\begin{cfuncdesc}{PyObject*}{PyObject_CallObject}{PyObject *callable_object, PyObject *args}
Fred Drakee058b4f1998-02-16 06:15:35 +00001243Call a callable Python object \var{callable_object}, with
1244arguments given by the tuple \var{args}. If no arguments are
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001245needed, then args may be \NULL{}. Returns the result of the
1246call on success, or \NULL{} on failure. This is the equivalent
Fred Drakee058b4f1998-02-16 06:15:35 +00001247of the Python expression \samp{apply(\var{o}, \var{args})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001248\end{cfuncdesc}
1249
1250\begin{cfuncdesc}{PyObject*}{PyObject_CallFunction}{PyObject *callable_object, char *format, ...}
Fred Drakee058b4f1998-02-16 06:15:35 +00001251Call a callable Python object \var{callable_object}, with a
Fred Drakeb0a78731998-01-13 18:51:10 +00001252variable number of \C{} arguments. The \C{} arguments are described
Fred Drakee058b4f1998-02-16 06:15:35 +00001253using a \cfunction{Py_BuildValue()} style format string. The format may
1254be \NULL{}, indicating that no arguments are provided. Returns the
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001255result of the call on success, or \NULL{} on failure. This is
Fred Drakee058b4f1998-02-16 06:15:35 +00001256the equivalent of the Python expression \samp{apply(\var{o},
1257\var{args})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001258\end{cfuncdesc}
1259
1260
1261\begin{cfuncdesc}{PyObject*}{PyObject_CallMethod}{PyObject *o, char *m, char *format, ...}
Fred Drakee058b4f1998-02-16 06:15:35 +00001262Call the method named \var{m} of object \var{o} with a variable number
1263of C arguments. The \C{} arguments are described by a
1264\cfunction{Py_BuildValue()} format string. The format may be \NULL{},
1265indicating that no arguments are provided. Returns the result of the
1266call on success, or \NULL{} on failure. This is the equivalent of the
1267Python expression \samp{\var{o}.\var{method}(\var{args})}.
1268Note that Special method names, such as \method{__add__()},
1269\method{__getitem__()}, and so on are not supported. The specific
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001270abstract-object routines for these must be used.
1271\end{cfuncdesc}
1272
1273
1274\begin{cfuncdesc}{int}{PyObject_Hash}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001275Compute and return the hash value of an object \var{o}. On
1276failure, return \code{-1}. This is the equivalent of the Python
1277expression \samp{hash(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001278\end{cfuncdesc}
1279
1280
1281\begin{cfuncdesc}{int}{PyObject_IsTrue}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001282Returns \code{1} if the object \var{o} is considered to be true, and
1283\code{0} otherwise. This is equivalent to the Python expression
1284\samp{not not \var{o}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001285This function always succeeds.
1286\end{cfuncdesc}
1287
1288
1289\begin{cfuncdesc}{PyObject*}{PyObject_Type}{PyObject *o}
1290On success, returns a type object corresponding to the object
Fred Drakee058b4f1998-02-16 06:15:35 +00001291type of object \var{o}. On failure, returns \NULL{}. This is
1292equivalent to the Python expression \samp{type(\var{o})}.
Fred Drake53fb7721998-02-16 06:23:20 +00001293\bifuncindex{type}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001294\end{cfuncdesc}
1295
1296\begin{cfuncdesc}{int}{PyObject_Length}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001297Return the length of object \var{o}. If the object \var{o} provides
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001298both sequence and mapping protocols, the sequence length is
Fred Drakee058b4f1998-02-16 06:15:35 +00001299returned. On error, \code{-1} is returned. This is the equivalent
1300to the Python expression \samp{len(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001301\end{cfuncdesc}
1302
1303
1304\begin{cfuncdesc}{PyObject*}{PyObject_GetItem}{PyObject *o, PyObject *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001305Return element of \var{o} corresponding to the object \var{key} or
1306\NULL{} on failure. This is the equivalent of the Python expression
1307\samp{\var{o}[\var{key}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001308\end{cfuncdesc}
1309
1310
1311\begin{cfuncdesc}{int}{PyObject_SetItem}{PyObject *o, PyObject *key, PyObject *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001312Map the object \var{key} to the value \var{v}.
1313Returns \code{-1} on failure. This is the equivalent
1314of the Python statement \samp{\var{o}[\var{key}] = \var{v}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001315\end{cfuncdesc}
1316
1317
Guido van Rossumd1dbf631999-01-22 20:10:49 +00001318\begin{cfuncdesc}{int}{PyObject_DelItem}{PyObject *o, PyObject *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001319Delete the mapping for \var{key} from \var{o}. Returns \code{-1} on
1320failure. This is the equivalent of the Python statement \samp{del
1321\var{o}[\var{key}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001322\end{cfuncdesc}
1323
1324
Fred Drakeefd146c1999-02-15 15:30:45 +00001325\section{Number Protocol \label{number}}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001326
1327\begin{cfuncdesc}{int}{PyNumber_Check}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001328Returns \code{1} if the object \var{o} provides numeric protocols, and
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001329false otherwise.
1330This function always succeeds.
1331\end{cfuncdesc}
1332
1333
1334\begin{cfuncdesc}{PyObject*}{PyNumber_Add}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001335Returns the result of adding \var{o1} and \var{o2}, or \NULL{} on
1336failure. This is the equivalent of the Python expression
1337\samp{\var{o1} + \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001338\end{cfuncdesc}
1339
1340
1341\begin{cfuncdesc}{PyObject*}{PyNumber_Subtract}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001342Returns the result of subtracting \var{o2} from \var{o1}, or \NULL{}
1343on failure. This is the equivalent of the Python expression
1344\samp{\var{o1} - \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001345\end{cfuncdesc}
1346
1347
1348\begin{cfuncdesc}{PyObject*}{PyNumber_Multiply}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001349Returns the result of multiplying \var{o1} and \var{o2}, or \NULL{} on
1350failure. This is the equivalent of the Python expression
1351\samp{\var{o1} * \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001352\end{cfuncdesc}
1353
1354
1355\begin{cfuncdesc}{PyObject*}{PyNumber_Divide}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001356Returns the result of dividing \var{o1} by \var{o2}, or \NULL{} on
1357failure.
1358This is the equivalent of the Python expression \samp{\var{o1} /
1359\var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001360\end{cfuncdesc}
1361
1362
1363\begin{cfuncdesc}{PyObject*}{PyNumber_Remainder}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001364Returns the remainder of dividing \var{o1} by \var{o2}, or \NULL{} on
1365failure. This is the equivalent of the Python expression
1366\samp{\var{o1} \% \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001367\end{cfuncdesc}
1368
1369
1370\begin{cfuncdesc}{PyObject*}{PyNumber_Divmod}{PyObject *o1, PyObject *o2}
Fred Drake53fb7721998-02-16 06:23:20 +00001371See the built-in function \function{divmod()}\bifuncindex{divmod}.
1372Returns \NULL{} on failure. This is the equivalent of the Python
1373expression \samp{divmod(\var{o1}, \var{o2})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001374\end{cfuncdesc}
1375
1376
1377\begin{cfuncdesc}{PyObject*}{PyNumber_Power}{PyObject *o1, PyObject *o2, PyObject *o3}
Fred Drake53fb7721998-02-16 06:23:20 +00001378See the built-in function \function{pow()}\bifuncindex{pow}. Returns
1379\NULL{} on failure. This is the equivalent of the Python expression
Fred Drakee058b4f1998-02-16 06:15:35 +00001380\samp{pow(\var{o1}, \var{o2}, \var{o3})}, where \var{o3} is optional.
Fred Drakef8830d11998-04-23 14:06:01 +00001381If \var{o3} is to be ignored, pass \cdata{Py_None} in its place.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001382\end{cfuncdesc}
1383
1384
1385\begin{cfuncdesc}{PyObject*}{PyNumber_Negative}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001386Returns the negation of \var{o} on success, or \NULL{} on failure.
1387This is the equivalent of the Python expression \samp{-\var{o}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001388\end{cfuncdesc}
1389
1390
1391\begin{cfuncdesc}{PyObject*}{PyNumber_Positive}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001392Returns \var{o} on success, or \NULL{} on failure.
1393This is the equivalent of the Python expression \samp{+\var{o}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001394\end{cfuncdesc}
1395
1396
1397\begin{cfuncdesc}{PyObject*}{PyNumber_Absolute}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001398Returns the absolute value of \var{o}, or \NULL{} on failure. This is
1399the equivalent of the Python expression \samp{abs(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001400\end{cfuncdesc}
1401
1402
1403\begin{cfuncdesc}{PyObject*}{PyNumber_Invert}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001404Returns the bitwise negation of \var{o} on success, or \NULL{} on
1405failure. This is the equivalent of the Python expression
1406\samp{\~\var{o}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001407\end{cfuncdesc}
1408
1409
1410\begin{cfuncdesc}{PyObject*}{PyNumber_Lshift}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001411Returns the result of left shifting \var{o1} by \var{o2} on success,
1412or \NULL{} on failure. This is the equivalent of the Python
1413expression \samp{\var{o1} << \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001414\end{cfuncdesc}
1415
1416
1417\begin{cfuncdesc}{PyObject*}{PyNumber_Rshift}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001418Returns the result of right shifting \var{o1} by \var{o2} on success,
1419or \NULL{} on failure. This is the equivalent of the Python
1420expression \samp{\var{o1} >> \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001421\end{cfuncdesc}
1422
1423
1424\begin{cfuncdesc}{PyObject*}{PyNumber_And}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001425Returns the result of ``anding'' \var{o2} and \var{o2} on success and
1426\NULL{} on failure. This is the equivalent of the Python
1427expression \samp{\var{o1} and \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001428\end{cfuncdesc}
1429
1430
1431\begin{cfuncdesc}{PyObject*}{PyNumber_Xor}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001432Returns the bitwise exclusive or of \var{o1} by \var{o2} on success,
1433or \NULL{} on failure. This is the equivalent of the Python
1434expression \samp{\var{o1} \^{ }\var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001435\end{cfuncdesc}
1436
1437\begin{cfuncdesc}{PyObject*}{PyNumber_Or}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001438Returns the result of \var{o1} and \var{o2} on success, or \NULL{} on
1439failure. This is the equivalent of the Python expression
1440\samp{\var{o1} or \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001441\end{cfuncdesc}
1442
1443
Fred Drakee058b4f1998-02-16 06:15:35 +00001444\begin{cfuncdesc}{PyObject*}{PyNumber_Coerce}{PyObject **p1, PyObject **p2}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001445This function takes the addresses of two variables of type
Fred Drakef8830d11998-04-23 14:06:01 +00001446\ctype{PyObject*}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001447
Fred Drakee058b4f1998-02-16 06:15:35 +00001448If the objects pointed to by \code{*\var{p1}} and \code{*\var{p2}}
1449have the same type, increment their reference count and return
1450\code{0} (success). If the objects can be converted to a common
1451numeric type, replace \code{*p1} and \code{*p2} by their converted
1452value (with 'new' reference counts), and return \code{0}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001453If no conversion is possible, or if some other error occurs,
Fred Drakee058b4f1998-02-16 06:15:35 +00001454return \code{-1} (failure) and don't increment the reference counts.
1455The call \code{PyNumber_Coerce(\&o1, \&o2)} is equivalent to the
1456Python statement \samp{\var{o1}, \var{o2} = coerce(\var{o1},
1457\var{o2})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001458\end{cfuncdesc}
1459
1460
1461\begin{cfuncdesc}{PyObject*}{PyNumber_Int}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001462Returns the \var{o} converted to an integer object on success, or
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001463\NULL{} on failure. This is the equivalent of the Python
Fred Drakee058b4f1998-02-16 06:15:35 +00001464expression \samp{int(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001465\end{cfuncdesc}
1466
1467
1468\begin{cfuncdesc}{PyObject*}{PyNumber_Long}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001469Returns the \var{o} converted to a long integer object on success,
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001470or \NULL{} on failure. This is the equivalent of the Python
Fred Drakee058b4f1998-02-16 06:15:35 +00001471expression \samp{long(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001472\end{cfuncdesc}
1473
1474
1475\begin{cfuncdesc}{PyObject*}{PyNumber_Float}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001476Returns the \var{o} converted to a float object on success, or \NULL{}
1477on failure. This is the equivalent of the Python expression
1478\samp{float(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001479\end{cfuncdesc}
1480
1481
Fred Drakeefd146c1999-02-15 15:30:45 +00001482\section{Sequence Protocol \label{sequence}}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001483
1484\begin{cfuncdesc}{int}{PySequence_Check}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001485Return \code{1} if the object provides sequence protocol, and \code{0}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001486otherwise.
1487This function always succeeds.
1488\end{cfuncdesc}
1489
1490
1491\begin{cfuncdesc}{PyObject*}{PySequence_Concat}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001492Return the concatenation of \var{o1} and \var{o2} on success, and \NULL{} on
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001493failure. This is the equivalent of the Python
Fred Drakee058b4f1998-02-16 06:15:35 +00001494expression \samp{\var{o1} + \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001495\end{cfuncdesc}
1496
1497
1498\begin{cfuncdesc}{PyObject*}{PySequence_Repeat}{PyObject *o, int count}
Fred Drakee058b4f1998-02-16 06:15:35 +00001499Return the result of repeating sequence object \var{o} \var{count}
1500times, or \NULL{} on failure. This is the equivalent of the Python
1501expression \samp{\var{o} * \var{count}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001502\end{cfuncdesc}
1503
1504
1505\begin{cfuncdesc}{PyObject*}{PySequence_GetItem}{PyObject *o, int i}
Fred Drakee058b4f1998-02-16 06:15:35 +00001506Return the \var{i}th element of \var{o}, or \NULL{} on failure. This
1507is the equivalent of the Python expression \samp{\var{o}[\var{i}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001508\end{cfuncdesc}
1509
1510
1511\begin{cfuncdesc}{PyObject*}{PySequence_GetSlice}{PyObject *o, int i1, int i2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001512Return the slice of sequence object \var{o} between \var{i1} and
1513\var{i2}, or \NULL{} on failure. This is the equivalent of the Python
1514expression \samp{\var{o}[\var{i1}:\var{i2}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001515\end{cfuncdesc}
1516
1517
1518\begin{cfuncdesc}{int}{PySequence_SetItem}{PyObject *o, int i, PyObject *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001519Assign object \var{v} to the \var{i}th element of \var{o}.
1520Returns \code{-1} on failure. This is the equivalent of the Python
1521statement \samp{\var{o}[\var{i}] = \var{v}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001522\end{cfuncdesc}
1523
1524\begin{cfuncdesc}{int}{PySequence_DelItem}{PyObject *o, int i}
Fred Drakee058b4f1998-02-16 06:15:35 +00001525Delete the \var{i}th element of object \var{v}. Returns
1526\code{-1} on failure. This is the equivalent of the Python
1527statement \samp{del \var{o}[\var{i}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001528\end{cfuncdesc}
1529
1530\begin{cfuncdesc}{int}{PySequence_SetSlice}{PyObject *o, int i1, int i2, PyObject *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001531Assign the sequence object \var{v} to the slice in sequence
1532object \var{o} from \var{i1} to \var{i2}. This is the equivalent of
1533the Python statement \samp{\var{o}[\var{i1}:\var{i2}] = \var{v}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001534\end{cfuncdesc}
1535
1536\begin{cfuncdesc}{int}{PySequence_DelSlice}{PyObject *o, int i1, int i2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001537Delete the slice in sequence object \var{o} from \var{i1} to \var{i2}.
1538Returns \code{-1} on failure. This is the equivalent of the Python
1539statement \samp{del \var{o}[\var{i1}:\var{i2}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001540\end{cfuncdesc}
1541
1542\begin{cfuncdesc}{PyObject*}{PySequence_Tuple}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001543Returns the \var{o} as a tuple on success, and \NULL{} on failure.
1544This is equivalent to the Python expression \code{tuple(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001545\end{cfuncdesc}
1546
1547\begin{cfuncdesc}{int}{PySequence_Count}{PyObject *o, PyObject *value}
Fred Drakee058b4f1998-02-16 06:15:35 +00001548Return the number of occurrences of \var{value} in \var{o}, that is,
1549return the number of keys for which \code{\var{o}[\var{key}] ==
1550\var{value}}. On failure, return \code{-1}. This is equivalent to
1551the Python expression \samp{\var{o}.count(\var{value})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001552\end{cfuncdesc}
1553
1554\begin{cfuncdesc}{int}{PySequence_In}{PyObject *o, PyObject *value}
Fred Drakee058b4f1998-02-16 06:15:35 +00001555Determine if \var{o} contains \var{value}. If an item in \var{o} is
1556equal to \var{value}, return \code{1}, otherwise return \code{0}. On
1557error, return \code{-1}. This is equivalent to the Python expression
1558\samp{\var{value} in \var{o}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001559\end{cfuncdesc}
1560
1561\begin{cfuncdesc}{int}{PySequence_Index}{PyObject *o, PyObject *value}
Fred Drakee058b4f1998-02-16 06:15:35 +00001562Return the first index \var{i} for which \code{\var{o}[\var{i}] ==
1563\var{value}}. On error, return \code{-1}. This is equivalent to
1564the Python expression \samp{\var{o}.index(\var{value})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001565\end{cfuncdesc}
1566
Fred Drakef39ed671998-02-26 22:01:23 +00001567
Fred Drakeefd146c1999-02-15 15:30:45 +00001568\section{Mapping Protocol \label{mapping}}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001569
1570\begin{cfuncdesc}{int}{PyMapping_Check}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001571Return \code{1} if the object provides mapping protocol, and \code{0}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001572otherwise.
1573This function always succeeds.
1574\end{cfuncdesc}
1575
1576
1577\begin{cfuncdesc}{int}{PyMapping_Length}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001578Returns the number of keys in object \var{o} on success, and \code{-1}
1579on failure. For objects that do not provide sequence protocol,
1580this is equivalent to the Python expression \samp{len(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001581\end{cfuncdesc}
1582
1583
1584\begin{cfuncdesc}{int}{PyMapping_DelItemString}{PyObject *o, char *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001585Remove the mapping for object \var{key} from the object \var{o}.
1586Return \code{-1} on failure. This is equivalent to
1587the Python statement \samp{del \var{o}[\var{key}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001588\end{cfuncdesc}
1589
1590
1591\begin{cfuncdesc}{int}{PyMapping_DelItem}{PyObject *o, PyObject *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001592Remove the mapping for object \var{key} from the object \var{o}.
1593Return \code{-1} on failure. This is equivalent to
1594the Python statement \samp{del \var{o}[\var{key}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001595\end{cfuncdesc}
1596
1597
1598\begin{cfuncdesc}{int}{PyMapping_HasKeyString}{PyObject *o, char *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001599On success, return \code{1} if the mapping object has the key \var{key}
1600and \code{0} otherwise. This is equivalent to the Python expression
1601\samp{\var{o}.has_key(\var{key})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001602This function always succeeds.
1603\end{cfuncdesc}
1604
1605
1606\begin{cfuncdesc}{int}{PyMapping_HasKey}{PyObject *o, PyObject *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001607Return \code{1} if the mapping object has the key \var{key} and
1608\code{0} otherwise. This is equivalent to the Python expression
1609\samp{\var{o}.has_key(\var{key})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001610This function always succeeds.
1611\end{cfuncdesc}
1612
1613
1614\begin{cfuncdesc}{PyObject*}{PyMapping_Keys}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001615On success, return a list of the keys in object \var{o}. On
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001616failure, return \NULL{}. This is equivalent to the Python
Fred Drakee058b4f1998-02-16 06:15:35 +00001617expression \samp{\var{o}.keys()}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001618\end{cfuncdesc}
1619
1620
1621\begin{cfuncdesc}{PyObject*}{PyMapping_Values}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001622On success, return a list of the values in object \var{o}. On
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001623failure, return \NULL{}. This is equivalent to the Python
Fred Drakee058b4f1998-02-16 06:15:35 +00001624expression \samp{\var{o}.values()}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001625\end{cfuncdesc}
1626
1627
1628\begin{cfuncdesc}{PyObject*}{PyMapping_Items}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001629On success, return a list of the items in object \var{o}, where
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001630each item is a tuple containing a key-value pair. On
1631failure, return \NULL{}. This is equivalent to the Python
Fred Drakee058b4f1998-02-16 06:15:35 +00001632expression \samp{\var{o}.items()}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001633\end{cfuncdesc}
1634
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001635
1636\begin{cfuncdesc}{PyObject*}{PyMapping_GetItemString}{PyObject *o, char *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001637Return element of \var{o} corresponding to the object \var{key} or
1638\NULL{} on failure. This is the equivalent of the Python expression
1639\samp{\var{o}[\var{key}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001640\end{cfuncdesc}
1641
Guido van Rossum0a0f11b1998-10-16 17:43:53 +00001642\begin{cfuncdesc}{int}{PyMapping_SetItemString}{PyObject *o, char *key, PyObject *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001643Map the object \var{key} to the value \var{v} in object \var{o}.
1644Returns \code{-1} on failure. This is the equivalent of the Python
1645statement \samp{\var{o}[\var{key}] = \var{v}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001646\end{cfuncdesc}
1647
1648
1649\section{Constructors}
1650
1651\begin{cfuncdesc}{PyObject*}{PyFile_FromString}{char *file_name, char *mode}
1652On success, returns a new file object that is opened on the
Fred Drakee058b4f1998-02-16 06:15:35 +00001653file given by \var{file_name}, with a file mode given by \var{mode},
1654where \var{mode} has the same semantics as the standard \C{} routine
1655\cfunction{fopen()}. On failure, return \code{-1}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001656\end{cfuncdesc}
1657
1658\begin{cfuncdesc}{PyObject*}{PyFile_FromFile}{FILE *fp, char *file_name, char *mode, int close_on_del}
Fred Drakee058b4f1998-02-16 06:15:35 +00001659Return a new file object for an already opened standard \C{} file
1660pointer, \var{fp}. A file name, \var{file_name}, and open mode,
1661\var{mode}, must be provided as well as a flag, \var{close_on_del},
1662that indicates whether the file is to be closed when the file object
1663is destroyed. On failure, return \code{-1}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001664\end{cfuncdesc}
1665
1666\begin{cfuncdesc}{PyObject*}{PyFloat_FromDouble}{double v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001667Returns a new float object with the value \var{v} on success, and
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001668\NULL{} on failure.
1669\end{cfuncdesc}
1670
1671\begin{cfuncdesc}{PyObject*}{PyInt_FromLong}{long v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001672Returns a new int object with the value \var{v} on success, and
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001673\NULL{} on failure.
1674\end{cfuncdesc}
1675
Fred Drakee058b4f1998-02-16 06:15:35 +00001676\begin{cfuncdesc}{PyObject*}{PyList_New}{int len}
1677Returns a new list of length \var{len} on success, and \NULL{} on
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001678failure.
1679\end{cfuncdesc}
1680
1681\begin{cfuncdesc}{PyObject*}{PyLong_FromLong}{long v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001682Returns a new long object with the value \var{v} on success, and
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001683\NULL{} on failure.
1684\end{cfuncdesc}
1685
1686\begin{cfuncdesc}{PyObject*}{PyLong_FromDouble}{double v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001687Returns a new long object with the value \var{v} on success, and
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001688\NULL{} on failure.
1689\end{cfuncdesc}
1690
1691\begin{cfuncdesc}{PyObject*}{PyDict_New}{}
1692Returns a new empty dictionary on success, and \NULL{} on
1693failure.
1694\end{cfuncdesc}
1695
1696\begin{cfuncdesc}{PyObject*}{PyString_FromString}{char *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001697Returns a new string object with the value \var{v} on success, and
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001698\NULL{} on failure.
1699\end{cfuncdesc}
1700
Fred Drakee058b4f1998-02-16 06:15:35 +00001701\begin{cfuncdesc}{PyObject*}{PyString_FromStringAndSize}{char *v, int len}
1702Returns a new string object with the value \var{v} and length
1703\var{len} on success, and \NULL{} on failure. If \var{v} is \NULL{},
1704the contents of the string are uninitialized.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001705\end{cfuncdesc}
1706
Fred Drakee058b4f1998-02-16 06:15:35 +00001707\begin{cfuncdesc}{PyObject*}{PyTuple_New}{int len}
1708Returns a new tuple of length \var{len} on success, and \NULL{} on
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001709failure.
1710\end{cfuncdesc}
1711
1712
Fred Drakeefd146c1999-02-15 15:30:45 +00001713\chapter{Concrete Objects Layer \label{concrete}}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001714
1715The functions in this chapter are specific to certain Python object
1716types. Passing them an object of the wrong type is not a good idea;
1717if you receive an object from a Python program and you are not sure
1718that it has the right type, you must perform a type check first;
1719e.g. to check that an object is a dictionary, use
Fred Drakee5bf8b21998-02-12 21:22:28 +00001720\cfunction{PyDict_Check()}. The chapter is structured like the
1721``family tree'' of Python object types.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001722
1723
Fred Drakeefd146c1999-02-15 15:30:45 +00001724\section{Fundamental Objects \label{fundamental}}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001725
Fred Drakee5bf8b21998-02-12 21:22:28 +00001726This section describes Python type objects and the singleton object
1727\code{None}.
1728
1729
Fred Drakeefd146c1999-02-15 15:30:45 +00001730\subsection{Type Objects \label{typeObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00001731
1732\begin{ctypedesc}{PyTypeObject}
1733
1734\end{ctypedesc}
1735
1736\begin{cvardesc}{PyObject *}{PyType_Type}
Fred Drakeefd146c1999-02-15 15:30:45 +00001737This is the type object for type objects; it is the same object as
1738\code{types.TypeType} in the Python layer.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001739\end{cvardesc}
1740
1741
Fred Drakeefd146c1999-02-15 15:30:45 +00001742\subsection{The None Object \label{noneObject}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00001743
1744\begin{cvardesc}{PyObject *}{Py_None}
Guido van Rossum44475131998-04-21 15:30:01 +00001745The Python \code{None} object, denoting lack of value. This object has
1746no methods.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001747\end{cvardesc}
1748
1749
Fred Drakeefd146c1999-02-15 15:30:45 +00001750\section{Sequence Objects \label{sequenceObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00001751
1752Generic operations on sequence objects were discussed in the previous
1753chapter; this section deals with the specific kinds of sequence
1754objects that are intrinsic to the Python language.
1755
1756
Fred Drakeefd146c1999-02-15 15:30:45 +00001757\subsection{String Objects \label{stringObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00001758
1759\begin{ctypedesc}{PyStringObject}
Fred Drakef8830d11998-04-23 14:06:01 +00001760This subtype of \ctype{PyObject} represents a Python string object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001761\end{ctypedesc}
1762
1763\begin{cvardesc}{PyTypeObject}{PyString_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00001764This instance of \ctype{PyTypeObject} represents the Python string type.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001765\end{cvardesc}
1766
1767\begin{cfuncdesc}{int}{PyString_Check}{PyObject *o}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001768Returns true if the object \var{o} is a string object.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001769\end{cfuncdesc}
1770
Fred Drakec6fa34e1998-04-02 06:47:24 +00001771\begin{cfuncdesc}{PyObject*}{PyString_FromStringAndSize}{const char *v,
1772 int len}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001773Returns a new string object with the value \var{v} and length
1774\var{len} on success, and \NULL{} on failure. If \var{v} is \NULL{},
1775the contents of the string are uninitialized.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001776\end{cfuncdesc}
1777
1778\begin{cfuncdesc}{PyObject*}{PyString_FromString}{const char *v}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001779Returns a new string object with the value \var{v} on success, and
1780\NULL{} on failure.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001781\end{cfuncdesc}
1782
1783\begin{cfuncdesc}{int}{PyString_Size}{PyObject *string}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001784Returns the length of the string in string object \var{string}.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001785\end{cfuncdesc}
1786
1787\begin{cfuncdesc}{char*}{PyString_AsString}{PyObject *string}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001788Resturns a \NULL{} terminated representation of the contents of \var{string}.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001789\end{cfuncdesc}
1790
1791\begin{cfuncdesc}{void}{PyString_Concat}{PyObject **string,
1792 PyObject *newpart}
Fred Drake66b989c1999-02-15 20:15:39 +00001793Creates a new string object in \var{*string} containing the
1794contents of \var{newpart} appended to \var{string}. The old value of
1795\var{string} have its reference count decremented. If the new string
1796cannot be created, the old reference to \var{string} will still be
1797discarded and the value of \var{*string} will be set to
1798\NULL{}; the appropriate exception will be set.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001799\end{cfuncdesc}
1800
1801\begin{cfuncdesc}{void}{PyString_ConcatAndDel}{PyObject **string,
1802 PyObject *newpart}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001803Creates a new string object in \var{*string} containing the contents
Guido van Rossum44475131998-04-21 15:30:01 +00001804of \var{newpart} appended to \var{string}. This version decrements
1805the reference count of \var{newpart}.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001806\end{cfuncdesc}
1807
1808\begin{cfuncdesc}{int}{_PyString_Resize}{PyObject **string, int newsize}
Guido van Rossum44475131998-04-21 15:30:01 +00001809A way to resize a string object even though it is ``immutable''.
1810Only use this to build up a brand new string object; don't use this if
1811the string may already be known in other parts of the code.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001812\end{cfuncdesc}
1813
1814\begin{cfuncdesc}{PyObject*}{PyString_Format}{PyObject *format,
1815 PyObject *args}
Guido van Rossum44475131998-04-21 15:30:01 +00001816Returns a new string object from \var{format} and \var{args}. Analogous
1817to \code{\var{format} \% \var{args}}. The \var{args} argument must be
1818a tuple.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001819\end{cfuncdesc}
1820
1821\begin{cfuncdesc}{void}{PyString_InternInPlace}{PyObject **string}
Guido van Rossum44475131998-04-21 15:30:01 +00001822Intern the argument \var{*string} in place. The argument must be the
1823address of a pointer variable pointing to a Python string object.
1824If there is an existing interned string that is the same as
1825\var{*string}, it sets \var{*string} to it (decrementing the reference
1826count of the old string object and incrementing the reference count of
1827the interned string object), otherwise it leaves \var{*string} alone
1828and interns it (incrementing its reference count). (Clarification:
1829even though there is a lot of talk about reference counts, think of
Fred Drakef8830d11998-04-23 14:06:01 +00001830this function as reference-count-neutral; you own the object after
1831the call if and only if you owned it before the call.)
Fred Drakec6fa34e1998-04-02 06:47:24 +00001832\end{cfuncdesc}
1833
1834\begin{cfuncdesc}{PyObject*}{PyString_InternFromString}{const char *v}
Fred Drakef8830d11998-04-23 14:06:01 +00001835A combination of \cfunction{PyString_FromString()} and
1836\cfunction{PyString_InternInPlace()}, returning either a new string object
Guido van Rossum44475131998-04-21 15:30:01 +00001837that has been interned, or a new (``owned'') reference to an earlier
1838interned string object with the same value.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001839\end{cfuncdesc}
1840
1841\begin{cfuncdesc}{char*}{PyString_AS_STRING}{PyObject *string}
Fred Drakef8830d11998-04-23 14:06:01 +00001842Macro form of \cfunction{PyString_AsString()} but without error checking.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001843\end{cfuncdesc}
1844
Fred Drakec6fa34e1998-04-02 06:47:24 +00001845\begin{cfuncdesc}{int}{PyString_GET_SIZE}{PyObject *string}
Fred Drakef8830d11998-04-23 14:06:01 +00001846Macro form of \cfunction{PyString_GetSize()} but without error checking.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001847\end{cfuncdesc}
1848
1849
Fred Drake58c5a2a1999-08-04 13:13:24 +00001850\subsection{Buffer Objects \label{bufferObjects}}
1851
1852XXX need a real description of buffers and buffer ''segments.``
1853
1854\begin{cvardesc}{PyTypeObject}{PyBuffer_Type}
1855The instance of \ctype{PyTypeObject} which represents the Python
1856buffer type.
1857\end{cvardesc}
1858
1859\begin{cvardesc}{int}{Py_END_OF_BUFFER}
1860Constant returned by \cfunction{Py}
1861\end{cvardesc}
1862
1863\begin{cfuncdesc}{int}{PyBuffer_Check}{PyObject *p}
1864Return true if the argument has type \cdata{PyBuffer_Type}.
1865\end{cfuncdesc}
1866
1867\begin{cfuncdesc}{PyObject*}{PyBuffer_FromObject}{PyObject *base,
1868 int offset, int size}
1869Return a new read-only buffer object.
1870Raises \exception{TypeError} if \var{base} doesn't support the
1871read-only buffer protocol or doesn't provide exactly one buffer
1872segment. Raises \exception{ValueError} if \var{offset} is less than
1873zero.
1874\end{cfuncdesc}
1875
1876\begin{cfuncdesc}{PyObject*}{PyBuffer_FromReadWriteObject}{PyObject *base,
1877 int offset,
1878 int size}
1879Return a new writable buffer object. Parameters and exceptions are
1880similar to those for \cfunction{PyBuffer_FromObject()}.
1881\end{cfuncdesc}
1882
1883\begin{cfuncdesc}{PyObject*}{PyBuffer_FromMemory}{void *ptr, int size}
1884Return a new read-only buffer object that reads from a memory buffer.
1885The caller is responsible for ensuring that the memory buffer, passed
1886in as \var{ptr}, is not deallocated while the returned buffer object
1887exists. Raises \exception{ValueError} if \var{size} is less than
1888zero.
1889\end{cfuncdesc}
1890
1891\begin{cfuncdesc}{PyObject*}{PyBuffer_FromReadWriteMemory}{void *ptr, int size}
1892Return a new writable buffer object that reads from and writes to a
1893memory buffer. The caller is responsible for ensuring that the memory
1894buffer, passed in as \var{ptr}, is not deallocated while the returned
1895buffer object exists. Raises \exception{ValueError} if \var{size} is
1896less than zero.
1897\end{cfuncdesc}
1898
1899\begin{cfuncdesc}{PyObject*}{PyBuffer_New}{int size}
1900Returns a new writable buffer object that maintains its own memory
1901buffer of \var{size} bytes. \var{size} must be zero or positive.
1902\end{cfuncdesc}
1903
Guido van Rossum44475131998-04-21 15:30:01 +00001904
Fred Drakeefd146c1999-02-15 15:30:45 +00001905\subsection{Tuple Objects \label{tupleObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00001906
1907\begin{ctypedesc}{PyTupleObject}
Fred Drakef8830d11998-04-23 14:06:01 +00001908This subtype of \ctype{PyObject} represents a Python tuple object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001909\end{ctypedesc}
1910
1911\begin{cvardesc}{PyTypeObject}{PyTuple_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00001912This instance of \ctype{PyTypeObject} represents the Python tuple type.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001913\end{cvardesc}
1914
1915\begin{cfuncdesc}{int}{PyTuple_Check}{PyObject *p}
1916Return true if the argument is a tuple object.
1917\end{cfuncdesc}
1918
Fred Drakec6fa34e1998-04-02 06:47:24 +00001919\begin{cfuncdesc}{PyObject*}{PyTuple_New}{int s}
Fred Drakee058b4f1998-02-16 06:15:35 +00001920Return a new tuple object of size \var{s}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001921\end{cfuncdesc}
1922
1923\begin{cfuncdesc}{int}{PyTuple_Size}{PyTupleObject *p}
Fred Drakee058b4f1998-02-16 06:15:35 +00001924Takes a pointer to a tuple object, and returns the size
Fred Drakee5bf8b21998-02-12 21:22:28 +00001925of that tuple.
1926\end{cfuncdesc}
1927
Fred Drakec6fa34e1998-04-02 06:47:24 +00001928\begin{cfuncdesc}{PyObject*}{PyTuple_GetItem}{PyTupleObject *p, int pos}
Fred Drakee058b4f1998-02-16 06:15:35 +00001929Returns the object at position \var{pos} in the tuple pointed
1930to by \var{p}. If \var{pos} is out of bounds, returns \NULL{} and
Fred Drakef8830d11998-04-23 14:06:01 +00001931sets an \exception{IndexError} exception. \strong{Note:} this
1932function returns a ``borrowed'' reference.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001933\end{cfuncdesc}
1934
Fred Drakec6fa34e1998-04-02 06:47:24 +00001935\begin{cfuncdesc}{PyObject*}{PyTuple_GET_ITEM}{PyTupleObject *p, int pos}
Fred Drakee058b4f1998-02-16 06:15:35 +00001936Does the same, but does no checking of its arguments.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001937\end{cfuncdesc}
1938
Fred Drakec6fa34e1998-04-02 06:47:24 +00001939\begin{cfuncdesc}{PyObject*}{PyTuple_GetSlice}{PyTupleObject *p,
Fred Drakee5bf8b21998-02-12 21:22:28 +00001940 int low,
1941 int high}
Fred Drakee058b4f1998-02-16 06:15:35 +00001942Takes a slice of the tuple pointed to by \var{p} from
1943\var{low} to \var{high} and returns it as a new tuple.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001944\end{cfuncdesc}
1945
1946\begin{cfuncdesc}{int}{PyTuple_SetItem}{PyTupleObject *p,
1947 int pos,
1948 PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001949Inserts a reference to object \var{o} at position \var{pos} of
1950the tuple pointed to by \var{p}. It returns \code{0} on success.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001951\end{cfuncdesc}
1952
1953\begin{cfuncdesc}{void}{PyTuple_SET_ITEM}{PyTupleObject *p,
1954 int pos,
1955 PyObject *o}
1956
Fred Drakee058b4f1998-02-16 06:15:35 +00001957Does the same, but does no error checking, and
Fred Drakee5bf8b21998-02-12 21:22:28 +00001958should \emph{only} be used to fill in brand new tuples.
1959\end{cfuncdesc}
1960
Fred Drakec6fa34e1998-04-02 06:47:24 +00001961\begin{cfuncdesc}{int}{_PyTuple_Resize}{PyTupleObject *p,
Fred Drakee5bf8b21998-02-12 21:22:28 +00001962 int new,
1963 int last_is_sticky}
Fred Drakee058b4f1998-02-16 06:15:35 +00001964Can be used to resize a tuple. Because tuples are
Fred Drakee5bf8b21998-02-12 21:22:28 +00001965\emph{supposed} to be immutable, this should only be used if there is only
1966one module referencing the object. Do \emph{not} use this if the tuple may
Fred Drakee058b4f1998-02-16 06:15:35 +00001967already be known to some other part of the code. \var{last_is_sticky} is
1968a flag --- if set, the tuple will grow or shrink at the front, otherwise
Fred Drakee5bf8b21998-02-12 21:22:28 +00001969it will grow or shrink at the end. Think of this as destroying the old
1970tuple and creating a new one, only more efficiently.
1971\end{cfuncdesc}
1972
1973
Fred Drakeefd146c1999-02-15 15:30:45 +00001974\subsection{List Objects \label{listObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00001975
1976\begin{ctypedesc}{PyListObject}
Fred Drakef8830d11998-04-23 14:06:01 +00001977This subtype of \ctype{PyObject} represents a Python list object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001978\end{ctypedesc}
1979
1980\begin{cvardesc}{PyTypeObject}{PyList_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00001981This instance of \ctype{PyTypeObject} represents the Python list type.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001982\end{cvardesc}
1983
1984\begin{cfuncdesc}{int}{PyList_Check}{PyObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00001985Returns true if its argument is a \ctype{PyListObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001986\end{cfuncdesc}
1987
Fred Drakec6fa34e1998-04-02 06:47:24 +00001988\begin{cfuncdesc}{PyObject*}{PyList_New}{int size}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001989Returns a new list of length \var{len} on success, and \NULL{} on
1990failure.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001991\end{cfuncdesc}
1992
Fred Drakec6fa34e1998-04-02 06:47:24 +00001993\begin{cfuncdesc}{int}{PyList_Size}{PyObject *list}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001994Returns the length of the list object in \var{list}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001995\end{cfuncdesc}
1996
Fred Drakec6fa34e1998-04-02 06:47:24 +00001997\begin{cfuncdesc}{PyObject*}{PyList_GetItem}{PyObject *list, int index}
Guido van Rossum44475131998-04-21 15:30:01 +00001998Returns the object at position \var{pos} in the list pointed
1999to by \var{p}. If \var{pos} is out of bounds, returns \NULL{} and
Fred Drakef8830d11998-04-23 14:06:01 +00002000sets an \exception{IndexError} exception. \strong{Note:} this
2001function returns a ``borrowed'' reference.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002002\end{cfuncdesc}
2003
Fred Drakec6fa34e1998-04-02 06:47:24 +00002004\begin{cfuncdesc}{int}{PyList_SetItem}{PyObject *list, int index,
2005 PyObject *item}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00002006Sets the item at index \var{index} in list to \var{item}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002007\end{cfuncdesc}
2008
Fred Drakec6fa34e1998-04-02 06:47:24 +00002009\begin{cfuncdesc}{int}{PyList_Insert}{PyObject *list, int index,
Guido van Rossum44475131998-04-21 15:30:01 +00002010 PyObject *item}
2011Inserts the item \var{item} into list \var{list} in front of index
2012\var{index}. Returns 0 if successful; returns -1 and sets an
2013exception if unsuccessful. Analogous to \code{list.insert(index, item)}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002014\end{cfuncdesc}
2015
Fred Drakec6fa34e1998-04-02 06:47:24 +00002016\begin{cfuncdesc}{int}{PyList_Append}{PyObject *list, PyObject *item}
Guido van Rossum44475131998-04-21 15:30:01 +00002017Appends the object \var{item} at the end of list \var{list}. Returns
20180 if successful; returns -1 and sets an exception if unsuccessful.
2019Analogous to \code{list.append(item)}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002020\end{cfuncdesc}
2021
Fred Drakec6fa34e1998-04-02 06:47:24 +00002022\begin{cfuncdesc}{PyObject*}{PyList_GetSlice}{PyObject *list,
2023 int low, int high}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00002024Returns a list of the objects in \var{list} containing the objects
Guido van Rossum44475131998-04-21 15:30:01 +00002025\emph{between} \var{low} and \var{high}. Returns NULL and sets an
2026exception if unsuccessful.
2027Analogous to \code{list[low:high]}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002028\end{cfuncdesc}
2029
Fred Drakec6fa34e1998-04-02 06:47:24 +00002030\begin{cfuncdesc}{int}{PyList_SetSlice}{PyObject *list,
2031 int low, int high,
2032 PyObject *itemlist}
Guido van Rossum44475131998-04-21 15:30:01 +00002033Sets the slice of \var{list} between \var{low} and \var{high} to the contents
2034of \var{itemlist}. Analogous to \code{list[low:high]=itemlist}. Returns 0
2035on success, -1 on failure.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002036\end{cfuncdesc}
2037
Fred Drakec6fa34e1998-04-02 06:47:24 +00002038\begin{cfuncdesc}{int}{PyList_Sort}{PyObject *list}
Guido van Rossum44475131998-04-21 15:30:01 +00002039Sorts the items of \var{list} in place. Returns 0 on success, -1 on failure.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002040\end{cfuncdesc}
2041
Fred Drakec6fa34e1998-04-02 06:47:24 +00002042\begin{cfuncdesc}{int}{PyList_Reverse}{PyObject *list}
Guido van Rossum44475131998-04-21 15:30:01 +00002043Reverses the items of \var{list} in place. Returns 0 on success, -1 on failure.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002044\end{cfuncdesc}
2045
Fred Drakec6fa34e1998-04-02 06:47:24 +00002046\begin{cfuncdesc}{PyObject*}{PyList_AsTuple}{PyObject *list}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00002047Returns a new tuple object containing the contents of \var{list}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002048\end{cfuncdesc}
2049
Fred Drakec6fa34e1998-04-02 06:47:24 +00002050\begin{cfuncdesc}{PyObject*}{PyList_GET_ITEM}{PyObject *list, int i}
Fred Drakef8830d11998-04-23 14:06:01 +00002051Macro form of \cfunction{PyList_GetItem()} without error checking.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002052\end{cfuncdesc}
2053
Guido van Rossuma937d141998-04-24 18:22:02 +00002054\begin{cfuncdesc}{PyObject*}{PyList_SET_ITEM}{PyObject *list, int i,
2055 PyObject *o}
2056Macro form of \cfunction{PyList_SetItem()} without error checking.
2057\end{cfuncdesc}
2058
Fred Drakee5bf8b21998-02-12 21:22:28 +00002059\begin{cfuncdesc}{int}{PyList_GET_SIZE}{PyObject *list}
Fred Drakef8830d11998-04-23 14:06:01 +00002060Macro form of \cfunction{PyList_GetSize()} without error checking.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002061\end{cfuncdesc}
2062
2063
Fred Drakeefd146c1999-02-15 15:30:45 +00002064\section{Mapping Objects \label{mapObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002065
Fred Drakeefd146c1999-02-15 15:30:45 +00002066\subsection{Dictionary Objects \label{dictObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002067
2068\begin{ctypedesc}{PyDictObject}
Fred Drakef8830d11998-04-23 14:06:01 +00002069This subtype of \ctype{PyObject} represents a Python dictionary object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002070\end{ctypedesc}
2071
2072\begin{cvardesc}{PyTypeObject}{PyDict_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00002073This instance of \ctype{PyTypeObject} represents the Python dictionary type.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002074\end{cvardesc}
2075
2076\begin{cfuncdesc}{int}{PyDict_Check}{PyObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002077Returns true if its argument is a \ctype{PyDictObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002078\end{cfuncdesc}
2079
Fred Drakec6fa34e1998-04-02 06:47:24 +00002080\begin{cfuncdesc}{PyObject*}{PyDict_New}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00002081Returns a new empty dictionary.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002082\end{cfuncdesc}
2083
2084\begin{cfuncdesc}{void}{PyDict_Clear}{PyDictObject *p}
Fred Drakee058b4f1998-02-16 06:15:35 +00002085Empties an existing dictionary of all key/value pairs.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002086\end{cfuncdesc}
2087
2088\begin{cfuncdesc}{int}{PyDict_SetItem}{PyDictObject *p,
2089 PyObject *key,
2090 PyObject *val}
Fred Drakee058b4f1998-02-16 06:15:35 +00002091Inserts \var{value} into the dictionary with a key of \var{key}. Both
2092\var{key} and \var{value} should be PyObjects, and \var{key} should be
2093hashable.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002094\end{cfuncdesc}
2095
2096\begin{cfuncdesc}{int}{PyDict_SetItemString}{PyDictObject *p,
2097 char *key,
2098 PyObject *val}
Fred Drakee058b4f1998-02-16 06:15:35 +00002099Inserts \var{value} into the dictionary using \var{key}
Fred Drakef8830d11998-04-23 14:06:01 +00002100as a key. \var{key} should be a \ctype{char *}. The key object is
Fred Drakee058b4f1998-02-16 06:15:35 +00002101created using \code{PyString_FromString(\var{key})}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002102\end{cfuncdesc}
2103
2104\begin{cfuncdesc}{int}{PyDict_DelItem}{PyDictObject *p, PyObject *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00002105Removes the entry in dictionary \var{p} with key \var{key}.
2106\var{key} is a PyObject.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002107\end{cfuncdesc}
2108
2109\begin{cfuncdesc}{int}{PyDict_DelItemString}{PyDictObject *p, char *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00002110Removes the entry in dictionary \var{p} which has a key
Fred Drakef8830d11998-04-23 14:06:01 +00002111specified by the \ctype{char *}\var{key}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002112\end{cfuncdesc}
2113
Fred Drakec6fa34e1998-04-02 06:47:24 +00002114\begin{cfuncdesc}{PyObject*}{PyDict_GetItem}{PyDictObject *p, PyObject *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00002115Returns the object from dictionary \var{p} which has a key
Guido van Rossum44475131998-04-21 15:30:01 +00002116\var{key}. Returns \NULL{} if the key \var{key} is not present, but
Fred Drakef8830d11998-04-23 14:06:01 +00002117without (!) setting an exception. \strong{Note:} this function
2118returns a ``borrowed'' reference.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002119\end{cfuncdesc}
2120
Fred Drakec6fa34e1998-04-02 06:47:24 +00002121\begin{cfuncdesc}{PyObject*}{PyDict_GetItemString}{PyDictObject *p, char *key}
Fred Drakef8830d11998-04-23 14:06:01 +00002122This is the same as \cfunction{PyDict_GetItem()}, but \var{key} is
2123specified as a \ctype{char *}, rather than a \ctype{PyObject *}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002124\end{cfuncdesc}
2125
Fred Drakec6fa34e1998-04-02 06:47:24 +00002126\begin{cfuncdesc}{PyObject*}{PyDict_Items}{PyDictObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002127Returns a \ctype{PyListObject} containing all the items
Guido van Rossum44475131998-04-21 15:30:01 +00002128from the dictionary, as in the dictinoary method \method{items()} (see
Fred Drakebe486461999-11-09 17:03:03 +00002129the \citetitle[../lib/lib.html]{Python Library Reference}).
Fred Drakee5bf8b21998-02-12 21:22:28 +00002130\end{cfuncdesc}
2131
Fred Drakec6fa34e1998-04-02 06:47:24 +00002132\begin{cfuncdesc}{PyObject*}{PyDict_Keys}{PyDictObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002133Returns a \ctype{PyListObject} containing all the keys
Guido van Rossum44475131998-04-21 15:30:01 +00002134from the dictionary, as in the dictionary method \method{keys()} (see the
Fred Drakebe486461999-11-09 17:03:03 +00002135\citetitle[../lib/lib.html]{Python Library Reference}).
Fred Drakee5bf8b21998-02-12 21:22:28 +00002136\end{cfuncdesc}
2137
Fred Drakec6fa34e1998-04-02 06:47:24 +00002138\begin{cfuncdesc}{PyObject*}{PyDict_Values}{PyDictObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002139Returns a \ctype{PyListObject} containing all the values
Guido van Rossum44475131998-04-21 15:30:01 +00002140from the dictionary \var{p}, as in the dictionary method
Fred Drakebe486461999-11-09 17:03:03 +00002141\method{values()} (see the \citetitle[../lib/lib.html]{Python Library
2142Reference}).
Fred Drakee5bf8b21998-02-12 21:22:28 +00002143\end{cfuncdesc}
2144
2145\begin{cfuncdesc}{int}{PyDict_Size}{PyDictObject *p}
Fred Drakee058b4f1998-02-16 06:15:35 +00002146Returns the number of items in the dictionary.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002147\end{cfuncdesc}
2148
2149\begin{cfuncdesc}{int}{PyDict_Next}{PyDictObject *p,
2150 int ppos,
2151 PyObject **pkey,
2152 PyObject **pvalue}
2153
2154\end{cfuncdesc}
2155
2156
Fred Drakeefd146c1999-02-15 15:30:45 +00002157\section{Numeric Objects \label{numericObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002158
Fred Drakeefd146c1999-02-15 15:30:45 +00002159\subsection{Plain Integer Objects \label{intObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002160
2161\begin{ctypedesc}{PyIntObject}
Fred Drakef8830d11998-04-23 14:06:01 +00002162This subtype of \ctype{PyObject} represents a Python integer object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002163\end{ctypedesc}
2164
2165\begin{cvardesc}{PyTypeObject}{PyInt_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00002166This instance of \ctype{PyTypeObject} represents the Python plain
Fred Drakee5bf8b21998-02-12 21:22:28 +00002167integer type.
2168\end{cvardesc}
2169
2170\begin{cfuncdesc}{int}{PyInt_Check}{PyObject *}
2171
2172\end{cfuncdesc}
2173
Fred Drakec6fa34e1998-04-02 06:47:24 +00002174\begin{cfuncdesc}{PyObject*}{PyInt_FromLong}{long ival}
Fred Drakee058b4f1998-02-16 06:15:35 +00002175Creates a new integer object with a value of \var{ival}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002176
2177The current implementation keeps an array of integer objects for all
Fred Drakee058b4f1998-02-16 06:15:35 +00002178integers between \code{-1} and \code{100}, when you create an int in
2179that range you actually just get back a reference to the existing
2180object. So it should be possible to change the value of \code{1}. I
Fred Drake7e9d3141998-04-03 05:02:28 +00002181suspect the behaviour of Python in this case is undefined. :-)
Fred Drakee5bf8b21998-02-12 21:22:28 +00002182\end{cfuncdesc}
2183
2184\begin{cfuncdesc}{long}{PyInt_AS_LONG}{PyIntObject *io}
Fred Drakee058b4f1998-02-16 06:15:35 +00002185Returns the value of the object \var{io}. No error checking is
2186performed.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002187\end{cfuncdesc}
2188
2189\begin{cfuncdesc}{long}{PyInt_AsLong}{PyObject *io}
Fred Drakef8830d11998-04-23 14:06:01 +00002190Will first attempt to cast the object to a \ctype{PyIntObject}, if
Fred Drakee058b4f1998-02-16 06:15:35 +00002191it is not already one, and then return its value.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002192\end{cfuncdesc}
2193
2194\begin{cfuncdesc}{long}{PyInt_GetMax}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00002195Returns the systems idea of the largest integer it can handle
2196(\constant{LONG_MAX}, as defined in the system header files).
Fred Drakee5bf8b21998-02-12 21:22:28 +00002197\end{cfuncdesc}
2198
2199
Fred Drakeefd146c1999-02-15 15:30:45 +00002200\subsection{Long Integer Objects \label{longObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002201
2202\begin{ctypedesc}{PyLongObject}
Fred Drakef8830d11998-04-23 14:06:01 +00002203This subtype of \ctype{PyObject} represents a Python long integer
Fred Drakee058b4f1998-02-16 06:15:35 +00002204object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002205\end{ctypedesc}
2206
2207\begin{cvardesc}{PyTypeObject}{PyLong_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00002208This instance of \ctype{PyTypeObject} represents the Python long
Fred Drakee058b4f1998-02-16 06:15:35 +00002209integer type.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002210\end{cvardesc}
2211
2212\begin{cfuncdesc}{int}{PyLong_Check}{PyObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002213Returns true if its argument is a \ctype{PyLongObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002214\end{cfuncdesc}
2215
Fred Drakec6fa34e1998-04-02 06:47:24 +00002216\begin{cfuncdesc}{PyObject*}{PyLong_FromLong}{long v}
Fred Drakef8830d11998-04-23 14:06:01 +00002217Returns a new \ctype{PyLongObject} object from \var{v}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002218\end{cfuncdesc}
2219
Fred Drakec6fa34e1998-04-02 06:47:24 +00002220\begin{cfuncdesc}{PyObject*}{PyLong_FromUnsignedLong}{unsigned long v}
Fred Drakef8830d11998-04-23 14:06:01 +00002221Returns a new \ctype{PyLongObject} object from an unsigned \C{} long.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002222\end{cfuncdesc}
2223
Fred Drakec6fa34e1998-04-02 06:47:24 +00002224\begin{cfuncdesc}{PyObject*}{PyLong_FromDouble}{double v}
Fred Drakef8830d11998-04-23 14:06:01 +00002225Returns a new \ctype{PyLongObject} object from the integer part of \var{v}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002226\end{cfuncdesc}
2227
Fred Drakec6fa34e1998-04-02 06:47:24 +00002228\begin{cfuncdesc}{long}{PyLong_AsLong}{PyObject *pylong}
Fred Drakef8830d11998-04-23 14:06:01 +00002229Returns a \C{} \ctype{long} representation of the contents of \var{pylong}.
2230WHAT HAPPENS IF \var{pylong} is greater than \constant{LONG_MAX}?
Fred Drakee5bf8b21998-02-12 21:22:28 +00002231\end{cfuncdesc}
2232
Fred Drakec6fa34e1998-04-02 06:47:24 +00002233\begin{cfuncdesc}{unsigned long}{PyLong_AsUnsignedLong}{PyObject *pylong}
Fred Drakef8830d11998-04-23 14:06:01 +00002234Returns a \C{} \ctype{unsigned long} representation of the contents of
2235\var{pylong}. WHAT HAPPENS IF \var{pylong} is greater than
2236\constant{ULONG_MAX}?
Fred Drakee5bf8b21998-02-12 21:22:28 +00002237\end{cfuncdesc}
2238
Fred Drakec6fa34e1998-04-02 06:47:24 +00002239\begin{cfuncdesc}{double}{PyLong_AsDouble}{PyObject *pylong}
Fred Drakef8830d11998-04-23 14:06:01 +00002240Returns a \C{} \ctype{double} representation of the contents of \var{pylong}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002241\end{cfuncdesc}
2242
Fred Drakec6fa34e1998-04-02 06:47:24 +00002243\begin{cfuncdesc}{PyObject*}{PyLong_FromString}{char *str, char **pend,
2244 int base}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002245\end{cfuncdesc}
2246
2247
Fred Drakeefd146c1999-02-15 15:30:45 +00002248\subsection{Floating Point Objects \label{floatObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002249
2250\begin{ctypedesc}{PyFloatObject}
Fred Drakef8830d11998-04-23 14:06:01 +00002251This subtype of \ctype{PyObject} represents a Python floating point
Fred Drakee058b4f1998-02-16 06:15:35 +00002252object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002253\end{ctypedesc}
2254
2255\begin{cvardesc}{PyTypeObject}{PyFloat_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00002256This instance of \ctype{PyTypeObject} represents the Python floating
Fred Drakee5bf8b21998-02-12 21:22:28 +00002257point type.
2258\end{cvardesc}
2259
2260\begin{cfuncdesc}{int}{PyFloat_Check}{PyObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002261Returns true if its argument is a \ctype{PyFloatObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002262\end{cfuncdesc}
2263
Fred Drakec6fa34e1998-04-02 06:47:24 +00002264\begin{cfuncdesc}{PyObject*}{PyFloat_FromDouble}{double v}
Fred Drakef8830d11998-04-23 14:06:01 +00002265Creates a \ctype{PyFloatObject} object from \var{v}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002266\end{cfuncdesc}
2267
Fred Drakec6fa34e1998-04-02 06:47:24 +00002268\begin{cfuncdesc}{double}{PyFloat_AsDouble}{PyObject *pyfloat}
Fred Drakef8830d11998-04-23 14:06:01 +00002269Returns a \C{} \ctype{double} representation of the contents of \var{pyfloat}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002270\end{cfuncdesc}
2271
Fred Drakec6fa34e1998-04-02 06:47:24 +00002272\begin{cfuncdesc}{double}{PyFloat_AS_DOUBLE}{PyObject *pyfloat}
Fred Drakef8830d11998-04-23 14:06:01 +00002273Returns a \C{} \ctype{double} representation of the contents of
2274\var{pyfloat}, but without error checking.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002275\end{cfuncdesc}
2276
2277
Fred Drakeefd146c1999-02-15 15:30:45 +00002278\subsection{Complex Number Objects \label{complexObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002279
2280\begin{ctypedesc}{Py_complex}
Fred Drake4de05a91998-02-16 14:25:26 +00002281The \C{} structure which corresponds to the value portion of a Python
2282complex number object. Most of the functions for dealing with complex
2283number objects use structures of this type as input or output values,
2284as appropriate. It is defined as:
2285
Fred Drakee058b4f1998-02-16 06:15:35 +00002286\begin{verbatim}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002287typedef struct {
2288 double real;
2289 double imag;
Fred Drake4de05a91998-02-16 14:25:26 +00002290} Py_complex;
Fred Drakee058b4f1998-02-16 06:15:35 +00002291\end{verbatim}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002292\end{ctypedesc}
2293
2294\begin{ctypedesc}{PyComplexObject}
Fred Drakef8830d11998-04-23 14:06:01 +00002295This subtype of \ctype{PyObject} represents a Python complex number object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002296\end{ctypedesc}
2297
2298\begin{cvardesc}{PyTypeObject}{PyComplex_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00002299This instance of \ctype{PyTypeObject} represents the Python complex
Fred Drakee5bf8b21998-02-12 21:22:28 +00002300number type.
2301\end{cvardesc}
2302
2303\begin{cfuncdesc}{int}{PyComplex_Check}{PyObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002304Returns true if its argument is a \ctype{PyComplexObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002305\end{cfuncdesc}
2306
Fred Drakec6fa34e1998-04-02 06:47:24 +00002307\begin{cfuncdesc}{Py_complex}{_Py_c_sum}{Py_complex left, Py_complex right}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002308\end{cfuncdesc}
2309
Fred Drakec6fa34e1998-04-02 06:47:24 +00002310\begin{cfuncdesc}{Py_complex}{_Py_c_diff}{Py_complex left, Py_complex right}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002311\end{cfuncdesc}
2312
Fred Drakec6fa34e1998-04-02 06:47:24 +00002313\begin{cfuncdesc}{Py_complex}{_Py_c_neg}{Py_complex complex}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002314\end{cfuncdesc}
2315
Fred Drakec6fa34e1998-04-02 06:47:24 +00002316\begin{cfuncdesc}{Py_complex}{_Py_c_prod}{Py_complex left, Py_complex right}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002317\end{cfuncdesc}
2318
Fred Drakec6fa34e1998-04-02 06:47:24 +00002319\begin{cfuncdesc}{Py_complex}{_Py_c_quot}{Py_complex dividend,
2320 Py_complex divisor}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002321\end{cfuncdesc}
2322
Fred Drakec6fa34e1998-04-02 06:47:24 +00002323\begin{cfuncdesc}{Py_complex}{_Py_c_pow}{Py_complex num, Py_complex exp}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002324\end{cfuncdesc}
2325
Fred Drakec6fa34e1998-04-02 06:47:24 +00002326\begin{cfuncdesc}{PyObject*}{PyComplex_FromCComplex}{Py_complex v}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002327\end{cfuncdesc}
2328
Fred Drakec6fa34e1998-04-02 06:47:24 +00002329\begin{cfuncdesc}{PyObject*}{PyComplex_FromDoubles}{double real, double imag}
Fred Drakef8830d11998-04-23 14:06:01 +00002330Returns a new \ctype{PyComplexObject} object from \var{real} and \var{imag}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002331\end{cfuncdesc}
2332
2333\begin{cfuncdesc}{double}{PyComplex_RealAsDouble}{PyObject *op}
Fred Drakef8830d11998-04-23 14:06:01 +00002334Returns the real part of \var{op} as a \C{} \ctype{double}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002335\end{cfuncdesc}
2336
2337\begin{cfuncdesc}{double}{PyComplex_ImagAsDouble}{PyObject *op}
Fred Drakef8830d11998-04-23 14:06:01 +00002338Returns the imaginary part of \var{op} as a \C{} \ctype{double}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002339\end{cfuncdesc}
2340
2341\begin{cfuncdesc}{Py_complex}{PyComplex_AsCComplex}{PyObject *op}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002342\end{cfuncdesc}
2343
2344
2345
Fred Drakeefd146c1999-02-15 15:30:45 +00002346\section{Other Objects \label{otherObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002347
Fred Drakeefd146c1999-02-15 15:30:45 +00002348\subsection{File Objects \label{fileObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002349
2350\begin{ctypedesc}{PyFileObject}
Fred Drakef8830d11998-04-23 14:06:01 +00002351This subtype of \ctype{PyObject} represents a Python file object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002352\end{ctypedesc}
2353
2354\begin{cvardesc}{PyTypeObject}{PyFile_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00002355This instance of \ctype{PyTypeObject} represents the Python file type.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002356\end{cvardesc}
2357
2358\begin{cfuncdesc}{int}{PyFile_Check}{PyObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002359Returns true if its argument is a \ctype{PyFileObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002360\end{cfuncdesc}
2361
Fred Drakec6fa34e1998-04-02 06:47:24 +00002362\begin{cfuncdesc}{PyObject*}{PyFile_FromString}{char *name, char *mode}
Fred Drakef8830d11998-04-23 14:06:01 +00002363Creates a new \ctype{PyFileObject} pointing to the file
Fred Drakee058b4f1998-02-16 06:15:35 +00002364specified in \var{name} with the mode specified in \var{mode}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002365\end{cfuncdesc}
2366
Fred Drakec6fa34e1998-04-02 06:47:24 +00002367\begin{cfuncdesc}{PyObject*}{PyFile_FromFile}{FILE *fp,
Fred Drakeb92dce31998-02-25 15:40:22 +00002368 char *name, char *mode, int (*close)}
Fred Drakef8830d11998-04-23 14:06:01 +00002369Creates a new \ctype{PyFileObject} from the already-open \var{fp}.
Fred Drakee058b4f1998-02-16 06:15:35 +00002370The function \var{close} will be called when the file should be
2371closed.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002372\end{cfuncdesc}
2373
2374\begin{cfuncdesc}{FILE *}{PyFile_AsFile}{PyFileObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002375Returns the file object associated with \var{p} as a \ctype{FILE *}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002376\end{cfuncdesc}
2377
Fred Drakec6fa34e1998-04-02 06:47:24 +00002378\begin{cfuncdesc}{PyObject*}{PyFile_GetLine}{PyObject *p, int n}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002379undocumented as yet
2380\end{cfuncdesc}
2381
Fred Drakec6fa34e1998-04-02 06:47:24 +00002382\begin{cfuncdesc}{PyObject*}{PyFile_Name}{PyObject *p}
Fred Drakee058b4f1998-02-16 06:15:35 +00002383Returns the name of the file specified by \var{p} as a
Fred Drakef8830d11998-04-23 14:06:01 +00002384\ctype{PyStringObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002385\end{cfuncdesc}
2386
2387\begin{cfuncdesc}{void}{PyFile_SetBufSize}{PyFileObject *p, int n}
Fred Drakee058b4f1998-02-16 06:15:35 +00002388Available on systems with \cfunction{setvbuf()} only. This should
2389only be called immediately after file object creation.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002390\end{cfuncdesc}
2391
2392\begin{cfuncdesc}{int}{PyFile_SoftSpace}{PyFileObject *p, int newflag}
Fred Drakef8830d11998-04-23 14:06:01 +00002393Sets the \member{softspace} attribute of \var{p} to \var{newflag}.
Fred Drakec6fa34e1998-04-02 06:47:24 +00002394Returns the previous value. This function clears any errors, and will
Fred Drakee058b4f1998-02-16 06:15:35 +00002395return \code{0} as the previous value if the attribute either does not
2396exist or if there were errors in retrieving it. There is no way to
2397detect errors from this function, but doing so should not be needed.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002398\end{cfuncdesc}
2399
Fred Drakec6fa34e1998-04-02 06:47:24 +00002400\begin{cfuncdesc}{int}{PyFile_WriteObject}{PyObject *obj, PyFileObject *p,
2401 int flags}
Fred Drakee058b4f1998-02-16 06:15:35 +00002402Writes object \var{obj} to file object \var{p}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002403\end{cfuncdesc}
2404
Fred Drakec6fa34e1998-04-02 06:47:24 +00002405\begin{cfuncdesc}{int}{PyFile_WriteString}{char *s, PyFileObject *p,
2406 int flags}
Fred Drakee058b4f1998-02-16 06:15:35 +00002407Writes string \var{s} to file object \var{p}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002408\end{cfuncdesc}
2409
2410
Fred Drakeefd146c1999-02-15 15:30:45 +00002411\subsection{Module Objects \label{moduleObjects}}
2412
2413\obindex{module}
2414There are only a few functions special to module objects.
2415
2416\begin{cfuncdesc}{PyObject *}{PyModule_New}{char *name}
2417Return a new module object with the \member{__name__} attribute set to
2418\var{name}. Only the module's \member{__doc__} and \member{__name__}
2419attributes are filled in; the caller is responsible for providing a
2420\member{__file__} attribute.
2421\end{cfuncdesc}
2422
2423\begin{cfuncdesc}{PyObject *}{PyModule_GetDict}{PyObject *module}
2424Return the dictionary object that implements \var{module}'s namespace;
2425this object is the same as the \member{__dict__} attribute of the
2426module object. This function never fails.
2427\end{cfuncdesc}
2428
2429\begin{cfuncdesc}{char *}{PyModule_GetName}{PyObject *module}
2430Return \var{module}'s \member{__name__} value. If the module does not
2431provide one, \exception{SystemError} is raised.
2432\end{cfuncdesc}
2433
2434\begin{cfuncdesc}{char *}{PyModule_GetFilename}{PyObject *module}
2435Return the name of the file from which \var{module} was loaded using
2436\var{module}'s \member{__file__} attribute. If this is not defined,
2437raise \exception{SystemError}.
2438\end{cfuncdesc}
2439
2440
2441\subsection{CObjects \label{cObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002442
Guido van Rossum44475131998-04-21 15:30:01 +00002443\begin{ctypedesc}{PyCObject}
Fred Drakef8830d11998-04-23 14:06:01 +00002444This subtype of \ctype{PyObject} represents an opaque value, useful for
Guido van Rossum44475131998-04-21 15:30:01 +00002445\C{} extension modules who need to pass an opaque value (as a
Fred Drakef8830d11998-04-23 14:06:01 +00002446\ctype{void *} pointer) through Python code to other \C{} code. It is
Guido van Rossum44475131998-04-21 15:30:01 +00002447often used to make a C function pointer defined in one module
2448available to other modules, so the regular import mechanism can be
2449used to access C APIs defined in dynamically loaded modules.
2450\end{ctypedesc}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002451
Guido van Rossum44475131998-04-21 15:30:01 +00002452\begin{cfuncdesc}{PyObject *}{PyCObject_FromVoidPtr}{void* cobj,
2453 void (*destr)(void *)}
Fred Drakef8830d11998-04-23 14:06:01 +00002454Creates a \ctype{PyCObject} from the \code{void *} \var{cobj}. The
Fred Drakedab44681999-05-13 18:41:14 +00002455\var{destr} function will be called when the object is reclaimed, unless
2456it is \NULL.
Guido van Rossum44475131998-04-21 15:30:01 +00002457\end{cfuncdesc}
2458
2459\begin{cfuncdesc}{PyObject *}{PyCObject_FromVoidPtrAndDesc}{void* cobj,
2460 void* desc, void (*destr)(void *, void *) }
Fred Drakef8830d11998-04-23 14:06:01 +00002461Creates a \ctype{PyCObject} from the \ctype{void *}\var{cobj}. The
2462\var{destr} function will be called when the object is reclaimed. The
2463\var{desc} argument can be used to pass extra callback data for the
2464destructor function.
Guido van Rossum44475131998-04-21 15:30:01 +00002465\end{cfuncdesc}
2466
2467\begin{cfuncdesc}{void *}{PyCObject_AsVoidPtr}{PyObject* self}
Fred Drakef8830d11998-04-23 14:06:01 +00002468Returns the object \ctype{void *} that the \ctype{PyCObject} \var{self}
Guido van Rossum44475131998-04-21 15:30:01 +00002469was created with.
2470\end{cfuncdesc}
2471
2472\begin{cfuncdesc}{void *}{PyCObject_GetDesc}{PyObject* self}
Fred Drakef8830d11998-04-23 14:06:01 +00002473Returns the description \ctype{void *} that the \ctype{PyCObject}
Guido van Rossum44475131998-04-21 15:30:01 +00002474\var{self} was created with.
2475\end{cfuncdesc}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002476
Fred Drakeefd146c1999-02-15 15:30:45 +00002477\chapter{Initialization, Finalization, and Threads
2478 \label{initialization}}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002479
Guido van Rossum4a944d71997-08-14 20:35:38 +00002480\begin{cfuncdesc}{void}{Py_Initialize}{}
2481Initialize the Python interpreter. In an application embedding
2482Python, this should be called before using any other Python/C API
Fred Drakee058b4f1998-02-16 06:15:35 +00002483functions; with the exception of \cfunction{Py_SetProgramName()},
2484\cfunction{PyEval_InitThreads()}, \cfunction{PyEval_ReleaseLock()},
2485and \cfunction{PyEval_AcquireLock()}. This initializes the table of
2486loaded modules (\code{sys.modules}), and creates the fundamental
Fred Drake4de05a91998-02-16 14:25:26 +00002487modules \module{__builtin__}\refbimodindex{__builtin__},
2488\module{__main__}\refbimodindex{__main__} and
2489\module{sys}\refbimodindex{sys}. It also initializes the module
2490search path (\code{sys.path}).%
2491\indexiii{module}{search}{path}
2492It does not set \code{sys.argv}; use \cfunction{PySys_SetArgv()} for
2493that. This is a no-op when called for a second time (without calling
Fred Drakee058b4f1998-02-16 06:15:35 +00002494\cfunction{Py_Finalize()} first). There is no return value; it is a
2495fatal error if the initialization fails.
Guido van Rossum42cefd01997-10-05 15:27:29 +00002496\end{cfuncdesc}
2497
2498\begin{cfuncdesc}{int}{Py_IsInitialized}{}
Guido van Rossum42cefd01997-10-05 15:27:29 +00002499Return true (nonzero) when the Python interpreter has been
Fred Drakee058b4f1998-02-16 06:15:35 +00002500initialized, false (zero) if not. After \cfunction{Py_Finalize()} is
2501called, this returns false until \cfunction{Py_Initialize()} is called
Guido van Rossum42cefd01997-10-05 15:27:29 +00002502again.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002503\end{cfuncdesc}
2504
2505\begin{cfuncdesc}{void}{Py_Finalize}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00002506Undo all initializations made by \cfunction{Py_Initialize()} and
2507subsequent use of Python/C API functions, and destroy all
2508sub-interpreters (see \cfunction{Py_NewInterpreter()} below) that were
2509created and not yet destroyed since the last call to
2510\cfunction{Py_Initialize()}. Ideally, this frees all memory allocated
2511by the Python interpreter. This is a no-op when called for a second
2512time (without calling \cfunction{Py_Initialize()} again first). There
2513is no return value; errors during finalization are ignored.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002514
2515This function is provided for a number of reasons. An embedding
2516application might want to restart Python without having to restart the
2517application itself. An application that has loaded the Python
2518interpreter from a dynamically loadable library (or DLL) might want to
2519free all memory allocated by Python before unloading the DLL. During a
2520hunt for memory leaks in an application a developer might want to free
2521all memory allocated by Python before exiting from the application.
2522
Fred Drakee058b4f1998-02-16 06:15:35 +00002523\strong{Bugs and caveats:} The destruction of modules and objects in
Guido van Rossum4a944d71997-08-14 20:35:38 +00002524modules is done in random order; this may cause destructors
Fred Drakee058b4f1998-02-16 06:15:35 +00002525(\method{__del__()} methods) to fail when they depend on other objects
Guido van Rossum4a944d71997-08-14 20:35:38 +00002526(even functions) or modules. Dynamically loaded extension modules
2527loaded by Python are not unloaded. Small amounts of memory allocated
2528by the Python interpreter may not be freed (if you find a leak, please
2529report it). Memory tied up in circular references between objects is
2530not freed. Some memory allocated by extension modules may not be
2531freed. Some extension may not work properly if their initialization
2532routine is called more than once; this can happen if an applcation
Fred Drakee058b4f1998-02-16 06:15:35 +00002533calls \cfunction{Py_Initialize()} and \cfunction{Py_Finalize()} more
2534than once.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002535\end{cfuncdesc}
2536
Fred Drakec6fa34e1998-04-02 06:47:24 +00002537\begin{cfuncdesc}{PyThreadState*}{Py_NewInterpreter}{}
Fred Drake4de05a91998-02-16 14:25:26 +00002538Create a new sub-interpreter. This is an (almost) totally separate
2539environment for the execution of Python code. In particular, the new
2540interpreter has separate, independent versions of all imported
2541modules, including the fundamental modules
2542\module{__builtin__}\refbimodindex{__builtin__},
2543\module{__main__}\refbimodindex{__main__} and
2544\module{sys}\refbimodindex{sys}. The table of loaded modules
2545(\code{sys.modules}) and the module search path (\code{sys.path}) are
2546also separate. The new environment has no \code{sys.argv} variable.
2547It has new standard I/O stream file objects \code{sys.stdin},
2548\code{sys.stdout} and \code{sys.stderr} (however these refer to the
Fred Drakef8830d11998-04-23 14:06:01 +00002549same underlying \ctype{FILE} structures in the \C{} library).
Guido van Rossum4a944d71997-08-14 20:35:38 +00002550
2551The return value points to the first thread state created in the new
2552sub-interpreter. This thread state is made the current thread state.
2553Note that no actual thread is created; see the discussion of thread
2554states below. If creation of the new interpreter is unsuccessful,
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002555\NULL{} is returned; no exception is set since the exception state
Guido van Rossum4a944d71997-08-14 20:35:38 +00002556is stored in the current thread state and there may not be a current
2557thread state. (Like all other Python/C API functions, the global
2558interpreter lock must be held before calling this function and is
2559still held when it returns; however, unlike most other Python/C API
2560functions, there needn't be a current thread state on entry.)
2561
2562Extension modules are shared between (sub-)interpreters as follows:
2563the first time a particular extension is imported, it is initialized
2564normally, and a (shallow) copy of its module's dictionary is
2565squirreled away. When the same extension is imported by another
2566(sub-)interpreter, a new module is initialized and filled with the
Fred Drakee058b4f1998-02-16 06:15:35 +00002567contents of this copy; the extension's \code{init} function is not
2568called. Note that this is different from what happens when an
2569extension is imported after the interpreter has been completely
2570re-initialized by calling \cfunction{Py_Finalize()} and
2571\cfunction{Py_Initialize()}; in that case, the extension's \code{init}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002572function \emph{is} called again.
2573
Fred Drakee058b4f1998-02-16 06:15:35 +00002574\strong{Bugs and caveats:} Because sub-interpreters (and the main
Guido van Rossum4a944d71997-08-14 20:35:38 +00002575interpreter) are part of the same process, the insulation between them
Fred Drakee058b4f1998-02-16 06:15:35 +00002576isn't perfect --- for example, using low-level file operations like
Fred Drakef8830d11998-04-23 14:06:01 +00002577\function{os.close()} they can (accidentally or maliciously) affect each
Guido van Rossum4a944d71997-08-14 20:35:38 +00002578other's open files. Because of the way extensions are shared between
2579(sub-)interpreters, some extensions may not work properly; this is
2580especially likely when the extension makes use of (static) global
2581variables, or when the extension manipulates its module's dictionary
2582after its initialization. It is possible to insert objects created in
2583one sub-interpreter into a namespace of another sub-interpreter; this
2584should be done with great care to avoid sharing user-defined
2585functions, methods, instances or classes between sub-interpreters,
2586since import operations executed by such objects may affect the
2587wrong (sub-)interpreter's dictionary of loaded modules. (XXX This is
2588a hard-to-fix bug that will be addressed in a future release.)
2589\end{cfuncdesc}
2590
2591\begin{cfuncdesc}{void}{Py_EndInterpreter}{PyThreadState *tstate}
2592Destroy the (sub-)interpreter represented by the given thread state.
2593The given thread state must be the current thread state. See the
2594discussion of thread states below. When the call returns, the current
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002595thread state is \NULL{}. All thread states associated with this
Guido van Rossum4a944d71997-08-14 20:35:38 +00002596interpreted are destroyed. (The global interpreter lock must be held
2597before calling this function and is still held when it returns.)
Fred Drakee058b4f1998-02-16 06:15:35 +00002598\cfunction{Py_Finalize()} will destroy all sub-interpreters that haven't
Guido van Rossum4a944d71997-08-14 20:35:38 +00002599been explicitly destroyed at that point.
2600\end{cfuncdesc}
2601
2602\begin{cfuncdesc}{void}{Py_SetProgramName}{char *name}
Fred Drakee058b4f1998-02-16 06:15:35 +00002603This function should be called before \cfunction{Py_Initialize()} is called
Guido van Rossum4a944d71997-08-14 20:35:38 +00002604for the first time, if it is called at all. It tells the interpreter
Fred Drakee058b4f1998-02-16 06:15:35 +00002605the value of the \code{argv[0]} argument to the \cfunction{main()} function
2606of the program. This is used by \cfunction{Py_GetPath()} and some other
Guido van Rossum4a944d71997-08-14 20:35:38 +00002607functions below to find the Python run-time libraries relative to the
2608interpreter executable. The default value is \code{"python"}. The
2609argument should point to a zero-terminated character string in static
2610storage whose contents will not change for the duration of the
2611program's execution. No code in the Python interpreter will change
2612the contents of this storage.
2613\end{cfuncdesc}
2614
Fred Drakec6fa34e1998-04-02 06:47:24 +00002615\begin{cfuncdesc}{char*}{Py_GetProgramName}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00002616Return the program name set with \cfunction{Py_SetProgramName()}, or the
Guido van Rossum4a944d71997-08-14 20:35:38 +00002617default. The returned string points into static storage; the caller
2618should not modify its value.
2619\end{cfuncdesc}
2620
Fred Drakec6fa34e1998-04-02 06:47:24 +00002621\begin{cfuncdesc}{char*}{Py_GetPrefix}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00002622Return the \emph{prefix} for installed platform-independent files. This
Guido van Rossum4a944d71997-08-14 20:35:38 +00002623is derived through a number of complicated rules from the program name
Fred Drakee058b4f1998-02-16 06:15:35 +00002624set with \cfunction{Py_SetProgramName()} and some environment variables;
Guido van Rossum4a944d71997-08-14 20:35:38 +00002625for example, if the program name is \code{"/usr/local/bin/python"},
2626the prefix is \code{"/usr/local"}. The returned string points into
2627static storage; the caller should not modify its value. This
Fred Drakec94d9341998-04-12 02:39:13 +00002628corresponds to the \makevar{prefix} variable in the top-level
Fred Drake310ee611999-11-09 17:31:42 +00002629\file{Makefile} and the \programopt{-}\programopt{-prefix} argument to the
Fred Drakee058b4f1998-02-16 06:15:35 +00002630\program{configure} script at build time. The value is available to
Fred Drakeb0a78731998-01-13 18:51:10 +00002631Python code as \code{sys.prefix}. It is only useful on \UNIX{}. See
Guido van Rossum4a944d71997-08-14 20:35:38 +00002632also the next function.
2633\end{cfuncdesc}
2634
Fred Drakec6fa34e1998-04-02 06:47:24 +00002635\begin{cfuncdesc}{char*}{Py_GetExecPrefix}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00002636Return the \emph{exec-prefix} for installed platform-\emph{de}pendent
Guido van Rossum4a944d71997-08-14 20:35:38 +00002637files. This is derived through a number of complicated rules from the
Fred Drakee058b4f1998-02-16 06:15:35 +00002638program name set with \cfunction{Py_SetProgramName()} and some environment
Guido van Rossum4a944d71997-08-14 20:35:38 +00002639variables; for example, if the program name is
2640\code{"/usr/local/bin/python"}, the exec-prefix is
2641\code{"/usr/local"}. The returned string points into static storage;
2642the caller should not modify its value. This corresponds to the
Fred Drakec94d9341998-04-12 02:39:13 +00002643\makevar{exec_prefix} variable in the top-level \file{Makefile} and the
Fred Drake310ee611999-11-09 17:31:42 +00002644\programopt{-}\programopt{-exec_prefix} argument to the
2645\program{configure} script at build time. The value is available to
2646Python code as \code{sys.exec_prefix}. It is only useful on \UNIX{}.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002647
2648Background: The exec-prefix differs from the prefix when platform
2649dependent files (such as executables and shared libraries) are
2650installed in a different directory tree. In a typical installation,
2651platform dependent files may be installed in the
2652\code{"/usr/local/plat"} subtree while platform independent may be
2653installed in \code{"/usr/local"}.
2654
2655Generally speaking, a platform is a combination of hardware and
2656software families, e.g. Sparc machines running the Solaris 2.x
2657operating system are considered the same platform, but Intel machines
2658running Solaris 2.x are another platform, and Intel machines running
2659Linux are yet another platform. Different major revisions of the same
Fred Drakeb0a78731998-01-13 18:51:10 +00002660operating system generally also form different platforms. Non-\UNIX{}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002661operating systems are a different story; the installation strategies
2662on those systems are so different that the prefix and exec-prefix are
2663meaningless, and set to the empty string. Note that compiled Python
2664bytecode files are platform independent (but not independent from the
2665Python version by which they were compiled!).
2666
Fred Drakee058b4f1998-02-16 06:15:35 +00002667System administrators will know how to configure the \program{mount} or
2668\program{automount} programs to share \code{"/usr/local"} between platforms
Guido van Rossum4a944d71997-08-14 20:35:38 +00002669while having \code{"/usr/local/plat"} be a different filesystem for each
2670platform.
2671\end{cfuncdesc}
2672
Fred Drakec6fa34e1998-04-02 06:47:24 +00002673\begin{cfuncdesc}{char*}{Py_GetProgramFullPath}{}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002674Return the full program name of the Python executable; this is
2675computed as a side-effect of deriving the default module search path
Fred Drakee058b4f1998-02-16 06:15:35 +00002676from the program name (set by \cfunction{Py_SetProgramName()} above). The
Guido van Rossum4a944d71997-08-14 20:35:38 +00002677returned string points into static storage; the caller should not
2678modify its value. The value is available to Python code as
Guido van Rossum42cefd01997-10-05 15:27:29 +00002679\code{sys.executable}.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002680\end{cfuncdesc}
2681
Fred Drakec6fa34e1998-04-02 06:47:24 +00002682\begin{cfuncdesc}{char*}{Py_GetPath}{}
Fred Drake4de05a91998-02-16 14:25:26 +00002683\indexiii{module}{search}{path}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002684Return the default module search path; this is computed from the
Fred Drakee058b4f1998-02-16 06:15:35 +00002685program name (set by \cfunction{Py_SetProgramName()} above) and some
Guido van Rossum4a944d71997-08-14 20:35:38 +00002686environment variables. The returned string consists of a series of
2687directory names separated by a platform dependent delimiter character.
Fred Drakef8830d11998-04-23 14:06:01 +00002688The delimiter character is \character{:} on \UNIX{}, \character{;} on
2689DOS/Windows, and \character{\\n} (the \ASCII{} newline character) on
Fred Drakee5bc4971998-02-12 23:36:49 +00002690Macintosh. The returned string points into static storage; the caller
Guido van Rossum4a944d71997-08-14 20:35:38 +00002691should not modify its value. The value is available to Python code
2692as the list \code{sys.path}, which may be modified to change the
2693future search path for loaded modules.
2694
2695% XXX should give the exact rules
2696\end{cfuncdesc}
2697
Fred Drakec6fa34e1998-04-02 06:47:24 +00002698\begin{cfuncdesc}{const char*}{Py_GetVersion}{}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002699Return the version of this Python interpreter. This is a string that
2700looks something like
2701
Guido van Rossum09270b51997-08-15 18:57:32 +00002702\begin{verbatim}
Fred Drakee058b4f1998-02-16 06:15:35 +00002703"1.5 (#67, Dec 31 1997, 22:34:28) [GCC 2.7.2.2]"
Guido van Rossum09270b51997-08-15 18:57:32 +00002704\end{verbatim}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002705
2706The first word (up to the first space character) is the current Python
2707version; the first three characters are the major and minor version
2708separated by a period. The returned string points into static storage;
2709the caller should not modify its value. The value is available to
2710Python code as the list \code{sys.version}.
2711\end{cfuncdesc}
2712
Fred Drakec6fa34e1998-04-02 06:47:24 +00002713\begin{cfuncdesc}{const char*}{Py_GetPlatform}{}
Fred Drakeb0a78731998-01-13 18:51:10 +00002714Return the platform identifier for the current platform. On \UNIX{},
Guido van Rossum4a944d71997-08-14 20:35:38 +00002715this is formed from the ``official'' name of the operating system,
2716converted to lower case, followed by the major revision number; e.g.,
2717for Solaris 2.x, which is also known as SunOS 5.x, the value is
2718\code{"sunos5"}. On Macintosh, it is \code{"mac"}. On Windows, it
2719is \code{"win"}. The returned string points into static storage;
2720the caller should not modify its value. The value is available to
2721Python code as \code{sys.platform}.
2722\end{cfuncdesc}
2723
Fred Drakec6fa34e1998-04-02 06:47:24 +00002724\begin{cfuncdesc}{const char*}{Py_GetCopyright}{}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002725Return the official copyright string for the current Python version,
2726for example
2727
2728\code{"Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam"}
2729
2730The returned string points into static storage; the caller should not
2731modify its value. The value is available to Python code as the list
2732\code{sys.copyright}.
2733\end{cfuncdesc}
2734
Fred Drakec6fa34e1998-04-02 06:47:24 +00002735\begin{cfuncdesc}{const char*}{Py_GetCompiler}{}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002736Return an indication of the compiler used to build the current Python
Fred Drakee058b4f1998-02-16 06:15:35 +00002737version, in square brackets, for example:
Guido van Rossum4a944d71997-08-14 20:35:38 +00002738
Fred Drakee058b4f1998-02-16 06:15:35 +00002739\begin{verbatim}
2740"[GCC 2.7.2.2]"
2741\end{verbatim}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002742
2743The returned string points into static storage; the caller should not
2744modify its value. The value is available to Python code as part of
2745the variable \code{sys.version}.
2746\end{cfuncdesc}
2747
Fred Drakec6fa34e1998-04-02 06:47:24 +00002748\begin{cfuncdesc}{const char*}{Py_GetBuildInfo}{}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002749Return information about the sequence number and build date and time
2750of the current Python interpreter instance, for example
2751
Guido van Rossum09270b51997-08-15 18:57:32 +00002752\begin{verbatim}
2753"#67, Aug 1 1997, 22:34:28"
2754\end{verbatim}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002755
2756The returned string points into static storage; the caller should not
2757modify its value. The value is available to Python code as part of
2758the variable \code{sys.version}.
2759\end{cfuncdesc}
2760
2761\begin{cfuncdesc}{int}{PySys_SetArgv}{int argc, char **argv}
2762% XXX
2763\end{cfuncdesc}
2764
2765% XXX Other PySys thingies (doesn't really belong in this chapter)
2766
Fred Drakeefd146c1999-02-15 15:30:45 +00002767\section{Thread State and the Global Interpreter Lock
2768 \label{threads}}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002769
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002770The Python interpreter is not fully thread safe. In order to support
2771multi-threaded Python programs, there's a global lock that must be
2772held by the current thread before it can safely access Python objects.
2773Without the lock, even the simplest operations could cause problems in
Fred Drake7baf3d41998-02-20 00:45:52 +00002774a multi-threaded program: for example, when two threads simultaneously
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002775increment the reference count of the same object, the reference count
2776could end up being incremented only once instead of twice.
2777
2778Therefore, the rule exists that only the thread that has acquired the
2779global interpreter lock may operate on Python objects or call Python/C
2780API functions. In order to support multi-threaded Python programs,
Fred Drakee058b4f1998-02-16 06:15:35 +00002781the interpreter regularly release and reacquires the lock --- by
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002782default, every ten bytecode instructions (this can be changed with
Fred Drakee058b4f1998-02-16 06:15:35 +00002783\function{sys.setcheckinterval()}). The lock is also released and
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002784reacquired around potentially blocking I/O operations like reading or
2785writing a file, so that other threads can run while the thread that
2786requests the I/O is waiting for the I/O operation to complete.
2787
2788The Python interpreter needs to keep some bookkeeping information
Fred Drakee058b4f1998-02-16 06:15:35 +00002789separate per thread --- for this it uses a data structure called
Fred Drakef8830d11998-04-23 14:06:01 +00002790\ctype{PyThreadState}. This is new in Python 1.5; in earlier versions,
Fred Drakee058b4f1998-02-16 06:15:35 +00002791such state was stored in global variables, and switching threads could
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002792cause problems. In particular, exception handling is now thread safe,
Fred Drakee058b4f1998-02-16 06:15:35 +00002793when the application uses \function{sys.exc_info()} to access the
2794exception last raised in the current thread.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002795
2796There's one global variable left, however: the pointer to the current
Fred Drakef8830d11998-04-23 14:06:01 +00002797\ctype{PyThreadState} structure. While most thread packages have a way
Fred Drake9d20ac31998-02-16 15:27:08 +00002798to store ``per-thread global data,'' Python's internal platform
Fred Drakee058b4f1998-02-16 06:15:35 +00002799independent thread abstraction doesn't support this yet. Therefore,
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002800the current thread state must be manipulated explicitly.
2801
2802This is easy enough in most cases. Most code manipulating the global
2803interpreter lock has the following simple structure:
2804
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002805\begin{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002806Save the thread state in a local variable.
2807Release the interpreter lock.
2808...Do some blocking I/O operation...
2809Reacquire the interpreter lock.
2810Restore the thread state from the local variable.
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002811\end{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002812
2813This is so common that a pair of macros exists to simplify it:
2814
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002815\begin{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002816Py_BEGIN_ALLOW_THREADS
2817...Do some blocking I/O operation...
2818Py_END_ALLOW_THREADS
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002819\end{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002820
Fred Drakee058b4f1998-02-16 06:15:35 +00002821The \code{Py_BEGIN_ALLOW_THREADS} macro opens a new block and declares
2822a hidden local variable; the \code{Py_END_ALLOW_THREADS} macro closes
2823the block. Another advantage of using these two macros is that when
2824Python is compiled without thread support, they are defined empty,
2825thus saving the thread state and lock manipulations.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002826
2827When thread support is enabled, the block above expands to the
2828following code:
2829
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002830\begin{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002831{
2832 PyThreadState *_save;
2833 _save = PyEval_SaveThread();
2834 ...Do some blocking I/O operation...
2835 PyEval_RestoreThread(_save);
2836}
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002837\end{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002838
2839Using even lower level primitives, we can get roughly the same effect
2840as follows:
2841
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002842\begin{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002843{
2844 PyThreadState *_save;
2845 _save = PyThreadState_Swap(NULL);
2846 PyEval_ReleaseLock();
2847 ...Do some blocking I/O operation...
2848 PyEval_AcquireLock();
2849 PyThreadState_Swap(_save);
2850}
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002851\end{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002852
2853There are some subtle differences; in particular,
Fred Drakee058b4f1998-02-16 06:15:35 +00002854\cfunction{PyEval_RestoreThread()} saves and restores the value of the
Fred Drakef8830d11998-04-23 14:06:01 +00002855global variable \cdata{errno}, since the lock manipulation does not
2856guarantee that \cdata{errno} is left alone. Also, when thread support
Fred Drakee058b4f1998-02-16 06:15:35 +00002857is disabled, \cfunction{PyEval_SaveThread()} and
2858\cfunction{PyEval_RestoreThread()} don't manipulate the lock; in this
2859case, \cfunction{PyEval_ReleaseLock()} and
2860\cfunction{PyEval_AcquireLock()} are not available. This is done so
2861that dynamically loaded extensions compiled with thread support
2862enabled can be loaded by an interpreter that was compiled with
2863disabled thread support.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002864
2865The global interpreter lock is used to protect the pointer to the
2866current thread state. When releasing the lock and saving the thread
2867state, the current thread state pointer must be retrieved before the
2868lock is released (since another thread could immediately acquire the
2869lock and store its own thread state in the global variable).
2870Reversely, when acquiring the lock and restoring the thread state, the
2871lock must be acquired before storing the thread state pointer.
2872
2873Why am I going on with so much detail about this? Because when
Fred Drakeb0a78731998-01-13 18:51:10 +00002874threads are created from \C{}, they don't have the global interpreter
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002875lock, nor is there a thread state data structure for them. Such
2876threads must bootstrap themselves into existence, by first creating a
2877thread state data structure, then acquiring the lock, and finally
2878storing their thread state pointer, before they can start using the
2879Python/C API. When they are done, they should reset the thread state
2880pointer, release the lock, and finally free their thread state data
2881structure.
2882
2883When creating a thread data structure, you need to provide an
2884interpreter state data structure. The interpreter state data
2885structure hold global data that is shared by all threads in an
2886interpreter, for example the module administration
2887(\code{sys.modules}). Depending on your needs, you can either create
2888a new interpreter state data structure, or share the interpreter state
2889data structure used by the Python main thread (to access the latter,
Fred Drakef8830d11998-04-23 14:06:01 +00002890you must obtain the thread state and access its \member{interp} member;
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002891this must be done by a thread that is created by Python or by the main
2892thread after Python is initialized).
2893
2894XXX More?
2895
2896\begin{ctypedesc}{PyInterpreterState}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002897This data structure represents the state shared by a number of
2898cooperating threads. Threads belonging to the same interpreter
2899share their module administration and a few other internal items.
2900There are no public members in this structure.
2901
2902Threads belonging to different interpreters initially share nothing,
2903except process state like available memory, open file descriptors and
2904such. The global interpreter lock is also shared by all threads,
2905regardless of to which interpreter they belong.
2906\end{ctypedesc}
2907
2908\begin{ctypedesc}{PyThreadState}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002909This data structure represents the state of a single thread. The only
Fred Drakef8830d11998-04-23 14:06:01 +00002910public data member is \ctype{PyInterpreterState *}\member{interp},
2911which points to this thread's interpreter state.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002912\end{ctypedesc}
2913
2914\begin{cfuncdesc}{void}{PyEval_InitThreads}{}
2915Initialize and acquire the global interpreter lock. It should be
2916called in the main thread before creating a second thread or engaging
Fred Drakee058b4f1998-02-16 06:15:35 +00002917in any other thread operations such as
2918\cfunction{PyEval_ReleaseLock()} or
2919\code{PyEval_ReleaseThread(\var{tstate})}. It is not needed before
2920calling \cfunction{PyEval_SaveThread()} or
2921\cfunction{PyEval_RestoreThread()}.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002922
2923This is a no-op when called for a second time. It is safe to call
Fred Drakee058b4f1998-02-16 06:15:35 +00002924this function before calling \cfunction{Py_Initialize()}.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002925
2926When only the main thread exists, no lock operations are needed. This
2927is a common situation (most Python programs do not use threads), and
2928the lock operations slow the interpreter down a bit. Therefore, the
2929lock is not created initially. This situation is equivalent to having
2930acquired the lock: when there is only a single thread, all object
2931accesses are safe. Therefore, when this function initializes the
Fred Drake4de05a91998-02-16 14:25:26 +00002932lock, it also acquires it. Before the Python
2933\module{thread}\refbimodindex{thread} module creates a new thread,
2934knowing that either it has the lock or the lock hasn't been created
2935yet, it calls \cfunction{PyEval_InitThreads()}. When this call
2936returns, it is guaranteed that the lock has been created and that it
2937has acquired it.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002938
2939It is \strong{not} safe to call this function when it is unknown which
2940thread (if any) currently has the global interpreter lock.
2941
2942This function is not available when thread support is disabled at
2943compile time.
2944\end{cfuncdesc}
2945
Guido van Rossum4a944d71997-08-14 20:35:38 +00002946\begin{cfuncdesc}{void}{PyEval_AcquireLock}{}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002947Acquire the global interpreter lock. The lock must have been created
2948earlier. If this thread already has the lock, a deadlock ensues.
2949This function is not available when thread support is disabled at
2950compile time.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002951\end{cfuncdesc}
2952
2953\begin{cfuncdesc}{void}{PyEval_ReleaseLock}{}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002954Release the global interpreter lock. The lock must have been created
2955earlier. This function is not available when thread support is
Fred Drakee058b4f1998-02-16 06:15:35 +00002956disabled at compile time.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002957\end{cfuncdesc}
2958
2959\begin{cfuncdesc}{void}{PyEval_AcquireThread}{PyThreadState *tstate}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002960Acquire the global interpreter lock and then set the current thread
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002961state to \var{tstate}, which should not be \NULL{}. The lock must
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002962have been created earlier. If this thread already has the lock,
2963deadlock ensues. This function is not available when thread support
Fred Drakee058b4f1998-02-16 06:15:35 +00002964is disabled at compile time.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002965\end{cfuncdesc}
2966
2967\begin{cfuncdesc}{void}{PyEval_ReleaseThread}{PyThreadState *tstate}
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002968Reset the current thread state to \NULL{} and release the global
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002969interpreter lock. The lock must have been created earlier and must be
2970held by the current thread. The \var{tstate} argument, which must not
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002971be \NULL{}, is only used to check that it represents the current
Fred Drakee058b4f1998-02-16 06:15:35 +00002972thread state --- if it isn't, a fatal error is reported. This
2973function is not available when thread support is disabled at compile
2974time.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002975\end{cfuncdesc}
2976
Fred Drakec6fa34e1998-04-02 06:47:24 +00002977\begin{cfuncdesc}{PyThreadState*}{PyEval_SaveThread}{}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002978Release the interpreter lock (if it has been created and thread
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002979support is enabled) and reset the thread state to \NULL{},
2980returning the previous thread state (which is not \NULL{}). If
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002981the lock has been created, the current thread must have acquired it.
2982(This function is available even when thread support is disabled at
2983compile time.)
Guido van Rossum4a944d71997-08-14 20:35:38 +00002984\end{cfuncdesc}
2985
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002986\begin{cfuncdesc}{void}{PyEval_RestoreThread}{PyThreadState *tstate}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002987Acquire the interpreter lock (if it has been created and thread
2988support is enabled) and set the thread state to \var{tstate}, which
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002989must not be \NULL{}. If the lock has been created, the current
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002990thread must not have acquired it, otherwise deadlock ensues. (This
2991function is available even when thread support is disabled at compile
2992time.)
Guido van Rossum4a944d71997-08-14 20:35:38 +00002993\end{cfuncdesc}
2994
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002995% XXX These aren't really C types, but the ctypedesc macro is the simplest!
2996\begin{ctypedesc}{Py_BEGIN_ALLOW_THREADS}
2997This macro expands to
Fred Drakee058b4f1998-02-16 06:15:35 +00002998\samp{\{ PyThreadState *_save; _save = PyEval_SaveThread();}.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002999Note that it contains an opening brace; it must be matched with a
3000following \code{Py_END_ALLOW_THREADS} macro. See above for further
3001discussion of this macro. It is a no-op when thread support is
3002disabled at compile time.
3003\end{ctypedesc}
3004
3005\begin{ctypedesc}{Py_END_ALLOW_THREADS}
3006This macro expands to
Fred Drakee058b4f1998-02-16 06:15:35 +00003007\samp{PyEval_RestoreThread(_save); \}}.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00003008Note that it contains a closing brace; it must be matched with an
3009earlier \code{Py_BEGIN_ALLOW_THREADS} macro. See above for further
3010discussion of this macro. It is a no-op when thread support is
3011disabled at compile time.
3012\end{ctypedesc}
3013
3014\begin{ctypedesc}{Py_BEGIN_BLOCK_THREADS}
Fred Drakee058b4f1998-02-16 06:15:35 +00003015This macro expands to \samp{PyEval_RestoreThread(_save);} i.e. it
Guido van Rossumc44d3d61997-10-06 05:10:47 +00003016is equivalent to \code{Py_END_ALLOW_THREADS} without the closing
3017brace. It is a no-op when thread support is disabled at compile
3018time.
3019\end{ctypedesc}
3020
3021\begin{ctypedesc}{Py_BEGIN_UNBLOCK_THREADS}
Fred Drakee058b4f1998-02-16 06:15:35 +00003022This macro expands to \samp{_save = PyEval_SaveThread();} i.e. it is
Guido van Rossumc44d3d61997-10-06 05:10:47 +00003023equivalent to \code{Py_BEGIN_ALLOW_THREADS} without the opening brace
3024and variable declaration. It is a no-op when thread support is
3025disabled at compile time.
3026\end{ctypedesc}
3027
3028All of the following functions are only available when thread support
3029is enabled at compile time, and must be called only when the
Fred Drake9d20ac31998-02-16 15:27:08 +00003030interpreter lock has been created.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00003031
Fred Drakec6fa34e1998-04-02 06:47:24 +00003032\begin{cfuncdesc}{PyInterpreterState*}{PyInterpreterState_New}{}
Guido van Rossumed9dcc11998-08-07 18:28:03 +00003033Create a new interpreter state object. The interpreter lock need not
3034be held, but may be held if it is necessary to serialize calls to this
3035function.
Guido van Rossum4a944d71997-08-14 20:35:38 +00003036\end{cfuncdesc}
3037
Guido van Rossumc44d3d61997-10-06 05:10:47 +00003038\begin{cfuncdesc}{void}{PyInterpreterState_Clear}{PyInterpreterState *interp}
3039Reset all information in an interpreter state object. The interpreter
3040lock must be held.
Guido van Rossum4a944d71997-08-14 20:35:38 +00003041\end{cfuncdesc}
3042
Guido van Rossumc44d3d61997-10-06 05:10:47 +00003043\begin{cfuncdesc}{void}{PyInterpreterState_Delete}{PyInterpreterState *interp}
3044Destroy an interpreter state object. The interpreter lock need not be
3045held. The interpreter state must have been reset with a previous
Fred Drakee058b4f1998-02-16 06:15:35 +00003046call to \cfunction{PyInterpreterState_Clear()}.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00003047\end{cfuncdesc}
3048
Fred Drakec6fa34e1998-04-02 06:47:24 +00003049\begin{cfuncdesc}{PyThreadState*}{PyThreadState_New}{PyInterpreterState *interp}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00003050Create a new thread state object belonging to the given interpreter
Guido van Rossumed9dcc11998-08-07 18:28:03 +00003051object. The interpreter lock need not be held, but may be held if it
3052is necessary to serialize calls to this function.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00003053\end{cfuncdesc}
3054
3055\begin{cfuncdesc}{void}{PyThreadState_Clear}{PyThreadState *tstate}
3056Reset all information in a thread state object. The interpreter lock
3057must be held.
3058\end{cfuncdesc}
3059
3060\begin{cfuncdesc}{void}{PyThreadState_Delete}{PyThreadState *tstate}
3061Destroy a thread state object. The interpreter lock need not be
3062held. The thread state must have been reset with a previous
Fred Drakee058b4f1998-02-16 06:15:35 +00003063call to \cfunction{PyThreadState_Clear()}.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00003064\end{cfuncdesc}
3065
Fred Drakec6fa34e1998-04-02 06:47:24 +00003066\begin{cfuncdesc}{PyThreadState*}{PyThreadState_Get}{}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00003067Return the current thread state. The interpreter lock must be held.
Guido van Rossum580aa8d1997-11-25 15:34:51 +00003068When the current thread state is \NULL{}, this issues a fatal
Guido van Rossum5b8a5231997-12-30 04:38:44 +00003069error (so that the caller needn't check for \NULL{}).
Guido van Rossumc44d3d61997-10-06 05:10:47 +00003070\end{cfuncdesc}
3071
Fred Drakec6fa34e1998-04-02 06:47:24 +00003072\begin{cfuncdesc}{PyThreadState*}{PyThreadState_Swap}{PyThreadState *tstate}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00003073Swap the current thread state with the thread state given by the
Guido van Rossum580aa8d1997-11-25 15:34:51 +00003074argument \var{tstate}, which may be \NULL{}. The interpreter lock
Guido van Rossumc44d3d61997-10-06 05:10:47 +00003075must be held.
3076\end{cfuncdesc}
3077
3078
Fred Drakeefd146c1999-02-15 15:30:45 +00003079\chapter{Defining New Object Types \label{newTypes}}
Guido van Rossum4a944d71997-08-14 20:35:38 +00003080
Fred Drakec6fa34e1998-04-02 06:47:24 +00003081\begin{cfuncdesc}{PyObject*}{_PyObject_New}{PyTypeObject *type}
Fred Drakee058b4f1998-02-16 06:15:35 +00003082\end{cfuncdesc}
3083
Fred Drakec6fa34e1998-04-02 06:47:24 +00003084\begin{cfuncdesc}{PyObject*}{_PyObject_NewVar}{PyTypeObject *type, int size}
Fred Drakee058b4f1998-02-16 06:15:35 +00003085\end{cfuncdesc}
3086
3087\begin{cfuncdesc}{TYPE}{_PyObject_NEW}{TYPE, PyTypeObject *}
3088\end{cfuncdesc}
3089
3090\begin{cfuncdesc}{TYPE}{_PyObject_NEW_VAR}{TYPE, PyTypeObject *, int size}
3091\end{cfuncdesc}
3092
Guido van Rossum3c4378b1998-04-14 20:21:10 +00003093Py_InitModule (!!!)
3094
3095PyArg_ParseTupleAndKeywords, PyArg_ParseTuple, PyArg_Parse
3096
3097Py_BuildValue
Guido van Rossumae110af1997-05-22 20:11:52 +00003098
3099PyObject, PyVarObject
3100
3101PyObject_HEAD, PyObject_HEAD_INIT, PyObject_VAR_HEAD
3102
3103Typedefs:
3104unaryfunc, binaryfunc, ternaryfunc, inquiry, coercion, intargfunc,
3105intintargfunc, intobjargproc, intintobjargproc, objobjargproc,
Fred Drake58c5a2a1999-08-04 13:13:24 +00003106getreadbufferproc, getsegcountproc, getcharbufferproc,
Guido van Rossumae110af1997-05-22 20:11:52 +00003107destructor, printfunc, getattrfunc, getattrofunc, setattrfunc,
3108setattrofunc, cmpfunc, reprfunc, hashfunc
3109
Fred Drake58c5a2a1999-08-04 13:13:24 +00003110\begin{ctypedesc}{int (*getwritebufferproc) (PyObject *self, int segment,
3111 void **ptrptr)}
3112Return a pointer to a writable memory buffer in \code{*\var{ptrptr}};
3113the memory buffer must correspond to buffer segment \var{segment}.
3114Must return \code{-1} and set an exception on error.
3115\exception{TypeError} should be raised if the object only supports
3116read-only buffers, and \exception{SystemError} should be raised when
3117\var{segment} specifies a segment that doesn't exist.
3118% Why doesn't it raise ValueError for this one?
3119\end{ctypedesc}
3120
Guido van Rossumae110af1997-05-22 20:11:52 +00003121PyNumberMethods
3122
3123PySequenceMethods
3124
3125PyMappingMethods
3126
3127PyBufferProcs
3128
3129PyTypeObject
3130
3131DL_IMPORT
3132
3133PyType_Type
3134
3135Py*_Check
3136
3137Py_None, _Py_NoneStruct
3138
Guido van Rossumae110af1997-05-22 20:11:52 +00003139
Fred Drakeefd146c1999-02-15 15:30:45 +00003140\chapter{Debugging \label{debugging}}
Guido van Rossumae110af1997-05-22 20:11:52 +00003141
Fred Drakee5bf8b21998-02-12 21:22:28 +00003142XXX Explain Py_DEBUG, Py_TRACE_REFS, Py_REF_DEBUG.
Guido van Rossum5b8a5231997-12-30 04:38:44 +00003143
3144
Fred Drakef3aa0e01998-03-17 06:23:13 +00003145\input{api.ind} % Index -- must be last
Guido van Rossum9231c8f1997-05-15 21:43:21 +00003146
3147\end{document}