blob: 33d6492078b5edc3dc35e014958322814eac244c [file] [log] [blame]
Fred Drake6659c301998-03-03 22:02:19 +00001\documentclass{manual}
Guido van Rossum7a2dba21993-11-05 14:45:11 +00002
Guido van Rossumd358afe1998-12-23 05:02:08 +00003% XXX PM explain how to add new types to Python
Guido van Rossum5049bcb1995-03-13 16:55:23 +00004
Guido van Rossum6938f061994-08-01 12:22:53 +00005\title{Extending and Embedding the Python Interpreter}
Guido van Rossum7a2dba21993-11-05 14:45:11 +00006
Guido van Rossum16cd7f91994-10-06 10:29:26 +00007\input{boilerplate}
Guido van Rossum83eb9621993-11-23 16:28:45 +00008
Guido van Rossum7a2dba21993-11-05 14:45:11 +00009% Tell \index to actually write the .idx file
10\makeindex
11
12\begin{document}
13
Guido van Rossum7a2dba21993-11-05 14:45:11 +000014\maketitle
15
Fred Drake9f86b661998-07-28 21:55:19 +000016\ifhtml
17\chapter*{Front Matter\label{front}}
18\fi
19
Guido van Rossum16cd7f91994-10-06 10:29:26 +000020\input{copyright}
21
Fred Drake33698f81999-02-16 23:06:32 +000022%begin{latexonly}
23\vspace{1in}
24%end{latexonly}
25\strong{\large Acknowledgements}
26
27% XXX This needs to be checked and updated manually before each
28% release.
29
30The following people have contributed sections to this document: Jim
31Fulton, Konrad Hinsen, Chris Phoenix, and Neil Schemenauer.
32
Guido van Rossum7a2dba21993-11-05 14:45:11 +000033\begin{abstract}
34
35\noindent
Guido van Rossumb92112d1995-03-20 14:24:09 +000036Python is an interpreted, object-oriented programming language. This
Fred Drakeec9fbe91999-02-15 16:20:25 +000037document describes how to write modules in C or \Cpp{} to extend the
Guido van Rossumb92112d1995-03-20 14:24:09 +000038Python interpreter with new modules. Those modules can define new
39functions but also new object types and their methods. The document
40also describes how to embed the Python interpreter in another
41application, for use as an extension language. Finally, it shows how
42to compile and link extension modules so that they can be loaded
43dynamically (at run time) into the interpreter, if the underlying
44operating system supports this feature.
45
46This document assumes basic knowledge about Python. For an informal
Fred Drake3da06a61998-02-26 18:49:12 +000047introduction to the language, see the Python Tutorial. The \emph{Python
48Reference Manual} gives a more formal definition of the language. The
49\emph{Python Library Reference} documents the existing object types,
Guido van Rossumb92112d1995-03-20 14:24:09 +000050functions and modules (both built-in and written in Python) that give
51the language its wide application range.
Guido van Rossum7a2dba21993-11-05 14:45:11 +000052
Fred Drakeec9fbe91999-02-15 16:20:25 +000053For a detailed description of the whole Python/C API, see the separate
Fred Drake8e015171999-02-17 18:12:14 +000054\emph{Python/C API Reference Manual}.
Guido van Rossumfdacc581997-10-07 14:40:16 +000055
56
Guido van Rossum7a2dba21993-11-05 14:45:11 +000057\end{abstract}
58
Fred Drake4d4f9e71998-01-13 22:25:02 +000059\tableofcontents
Guido van Rossum7a2dba21993-11-05 14:45:11 +000060
Guido van Rossumdb65a6c1993-11-05 17:11:16 +000061
Fred Drake8e015171999-02-17 18:12:14 +000062\chapter{Extending Python with C or \Cpp{} \label{intro}}
Guido van Rossum7a2dba21993-11-05 14:45:11 +000063
Guido van Rossum6f0132f1993-11-19 13:13:22 +000064
Guido van Rossumb92112d1995-03-20 14:24:09 +000065It is quite easy to add new built-in modules to Python, if you know
Fred Drakeec9fbe91999-02-15 16:20:25 +000066how to program in C. Such \dfn{extension modules} can do two things
Guido van Rossumb92112d1995-03-20 14:24:09 +000067that can't be done directly in Python: they can implement new built-in
Fred Drakeec9fbe91999-02-15 16:20:25 +000068object types, and they can call C library functions and system calls.
Guido van Rossum6938f061994-08-01 12:22:53 +000069
Guido van Rossum5049bcb1995-03-13 16:55:23 +000070To support extensions, the Python API (Application Programmers
Guido van Rossumb92112d1995-03-20 14:24:09 +000071Interface) defines a set of functions, macros and variables that
72provide access to most aspects of the Python run-time system. The
Fred Drakeec9fbe91999-02-15 16:20:25 +000073Python API is incorporated in a C source file by including the header
Guido van Rossumb92112d1995-03-20 14:24:09 +000074\code{"Python.h"}.
Guido van Rossum6938f061994-08-01 12:22:53 +000075
Guido van Rossumb92112d1995-03-20 14:24:09 +000076The compilation of an extension module depends on its intended use as
77well as on your system setup; details are given in a later section.
Guido van Rossum6938f061994-08-01 12:22:53 +000078
Guido van Rossum7a2dba21993-11-05 14:45:11 +000079
Fred Drake5e8aa541998-11-16 18:34:07 +000080\section{A Simple Example
81 \label{simpleExample}}
Guido van Rossum7a2dba21993-11-05 14:45:11 +000082
Guido van Rossumb92112d1995-03-20 14:24:09 +000083Let's create an extension module called \samp{spam} (the favorite food
84of Monty Python fans...) and let's say we want to create a Python
Fred Drakeec9fbe91999-02-15 16:20:25 +000085interface to the C library function \cfunction{system()}.\footnote{An
Guido van Rossumb92112d1995-03-20 14:24:09 +000086interface for this function already exists in the standard module
Fred Draked7bb3031998-03-03 17:52:07 +000087\module{os} --- it was chosen as a simple and straightfoward example.}
Guido van Rossumb92112d1995-03-20 14:24:09 +000088This function takes a null-terminated character string as argument and
89returns an integer. We want this function to be callable from Python
90as follows:
91
Fred Drake1e11a5c1998-02-13 07:11:32 +000092\begin{verbatim}
93>>> import spam
94>>> status = spam.system("ls -l")
95\end{verbatim}
96
Fred Drakea0dbddf1998-04-02 06:50:02 +000097Begin by creating a file \file{spammodule.c}. (In general, if a
Fred Drakeec9fbe91999-02-15 16:20:25 +000098module is called \samp{spam}, the C file containing its implementation
Guido van Rossumb92112d1995-03-20 14:24:09 +000099is called \file{spammodule.c}; if the module name is very long, like
100\samp{spammify}, the module name can be just \file{spammify.c}.)
101
102The first line of our file can be:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000103
Fred Drake1e11a5c1998-02-13 07:11:32 +0000104\begin{verbatim}
105#include "Python.h"
106\end{verbatim}
107
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000108which pulls in the Python API (you can add a comment describing the
109purpose of the module and a copyright notice if you like).
110
Guido van Rossumb92112d1995-03-20 14:24:09 +0000111All user-visible symbols defined by \code{"Python.h"} have a prefix of
112\samp{Py} or \samp{PY}, except those defined in standard header files.
113For convenience, and since they are used extensively by the Python
114interpreter, \code{"Python.h"} includes a few standard header files:
115\code{<stdio.h>}, \code{<string.h>}, \code{<errno.h>}, and
116\code{<stdlib.h>}. If the latter header file does not exist on your
Fred Draked7bb3031998-03-03 17:52:07 +0000117system, it declares the functions \cfunction{malloc()},
118\cfunction{free()} and \cfunction{realloc()} directly.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000119
Fred Drakeec9fbe91999-02-15 16:20:25 +0000120The next thing we add to our module file is the C function that will
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000121be called when the Python expression \samp{spam.system(\var{string})}
Guido van Rossumb92112d1995-03-20 14:24:09 +0000122is evaluated (we'll see shortly how it ends up being called):
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000123
Fred Drake1e11a5c1998-02-13 07:11:32 +0000124\begin{verbatim}
125static PyObject *
126spam_system(self, args)
127 PyObject *self;
128 PyObject *args;
129{
130 char *command;
131 int sts;
Fred Drakea0dbddf1998-04-02 06:50:02 +0000132
Fred Drake1e11a5c1998-02-13 07:11:32 +0000133 if (!PyArg_ParseTuple(args, "s", &command))
134 return NULL;
135 sts = system(command);
136 return Py_BuildValue("i", sts);
137}
138\end{verbatim}
139
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000140There is a straightforward translation from the argument list in
Guido van Rossumb92112d1995-03-20 14:24:09 +0000141Python (e.g.\ the single expression \code{"ls -l"}) to the arguments
Fred Drakeec9fbe91999-02-15 16:20:25 +0000142passed to the C function. The C function always has two arguments,
Guido van Rossumb92112d1995-03-20 14:24:09 +0000143conventionally named \var{self} and \var{args}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000144
Fred Drakeec9fbe91999-02-15 16:20:25 +0000145The \var{self} argument is only used when the C function implements a
Fred Drake9226d8e1999-02-22 14:55:46 +0000146built-in method, not a function. In the example, \var{self} will
147always be a \NULL{} pointer, since we are defining a function, not a
148method. (This is done so that the interpreter doesn't have to
149understand two different types of C functions.)
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000150
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000151The \var{args} argument will be a pointer to a Python tuple object
Guido van Rossumb92112d1995-03-20 14:24:09 +0000152containing the arguments. Each item of the tuple corresponds to an
153argument in the call's argument list. The arguments are Python
Fred Drakeec9fbe91999-02-15 16:20:25 +0000154objects --- in order to do anything with them in our C function we have
155to convert them to C values. The function \cfunction{PyArg_ParseTuple()}
156in the Python API checks the argument types and converts them to C
Guido van Rossumb92112d1995-03-20 14:24:09 +0000157values. It uses a template string to determine the required types of
Fred Drakeec9fbe91999-02-15 16:20:25 +0000158the arguments as well as the types of the C variables into which to
Guido van Rossumb92112d1995-03-20 14:24:09 +0000159store the converted values. More about this later.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000160
Fred Drake3da06a61998-02-26 18:49:12 +0000161\cfunction{PyArg_ParseTuple()} returns true (nonzero) if all arguments have
Guido van Rossumb92112d1995-03-20 14:24:09 +0000162the right type and its components have been stored in the variables
163whose addresses are passed. It returns false (zero) if an invalid
164argument list was passed. In the latter case it also raises an
165appropriate exception by so the calling function can return
Fred Drake0fd82681998-01-09 05:39:38 +0000166\NULL{} immediately (as we saw in the example).
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000167
168
Fred Drake5e8aa541998-11-16 18:34:07 +0000169\section{Intermezzo: Errors and Exceptions
170 \label{errors}}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000171
172An important convention throughout the Python interpreter is the
173following: when a function fails, it should set an exception condition
Fred Drake0fd82681998-01-09 05:39:38 +0000174and return an error value (usually a \NULL{} pointer). Exceptions
Guido van Rossumb92112d1995-03-20 14:24:09 +0000175are stored in a static global variable inside the interpreter; if this
Fred Drake0fd82681998-01-09 05:39:38 +0000176variable is \NULL{} no exception has occurred. A second global
Guido van Rossumb92112d1995-03-20 14:24:09 +0000177variable stores the ``associated value'' of the exception (the second
Fred Draked7bb3031998-03-03 17:52:07 +0000178argument to \keyword{raise}). A third variable contains the stack
Guido van Rossumb92112d1995-03-20 14:24:09 +0000179traceback in case the error originated in Python code. These three
Fred Drakeec9fbe91999-02-15 16:20:25 +0000180variables are the C equivalents of the Python variables
Fred Drakef9918f21999-02-05 18:30:49 +0000181\code{sys.exc_type}, \code{sys.exc_value} and \code{sys.exc_traceback} (see
182the section on module \module{sys} in the \emph{Python Library
Fred Draked7bb3031998-03-03 17:52:07 +0000183Reference}). It is important to know about them to understand how
184errors are passed around.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000185
Guido van Rossumb92112d1995-03-20 14:24:09 +0000186The Python API defines a number of functions to set various types of
187exceptions.
188
Fred Draked7bb3031998-03-03 17:52:07 +0000189The most common one is \cfunction{PyErr_SetString()}. Its arguments
Fred Drakeec9fbe91999-02-15 16:20:25 +0000190are an exception object and a C string. The exception object is
Fred Draked7bb3031998-03-03 17:52:07 +0000191usually a predefined object like \cdata{PyExc_ZeroDivisionError}. The
Fred Drakeec9fbe91999-02-15 16:20:25 +0000192C string indicates the cause of the error and is converted to a
Fred Draked7bb3031998-03-03 17:52:07 +0000193Python string object and stored as the ``associated value'' of the
194exception.
Guido van Rossumb92112d1995-03-20 14:24:09 +0000195
Fred Draked7bb3031998-03-03 17:52:07 +0000196Another useful function is \cfunction{PyErr_SetFromErrno()}, which only
Guido van Rossumb92112d1995-03-20 14:24:09 +0000197takes an exception argument and constructs the associated value by
Fred Draked7bb3031998-03-03 17:52:07 +0000198inspection of the (\UNIX{}) global variable \cdata{errno}. The most
199general function is \cfunction{PyErr_SetObject()}, which takes two object
Guido van Rossumb92112d1995-03-20 14:24:09 +0000200arguments, the exception and its associated value. You don't need to
Fred Draked7bb3031998-03-03 17:52:07 +0000201\cfunction{Py_INCREF()} the objects passed to any of these functions.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000202
203You can test non-destructively whether an exception has been set with
Fred Draked7bb3031998-03-03 17:52:07 +0000204\cfunction{PyErr_Occurred()}. This returns the current exception object,
Fred Drake0fd82681998-01-09 05:39:38 +0000205or \NULL{} if no exception has occurred. You normally don't need
Fred Draked7bb3031998-03-03 17:52:07 +0000206to call \cfunction{PyErr_Occurred()} to see whether an error occurred in a
Guido van Rossumb92112d1995-03-20 14:24:09 +0000207function call, since you should be able to tell from the return value.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000208
Guido van Rossumd16ddb61996-12-13 02:38:17 +0000209When a function \var{f} that calls another function \var{g} detects
Guido van Rossumb92112d1995-03-20 14:24:09 +0000210that the latter fails, \var{f} should itself return an error value
Fred Drake33698f81999-02-16 23:06:32 +0000211(e.g.\ \NULL{} or \code{-1}). It should \emph{not} call one of the
Fred Draked7bb3031998-03-03 17:52:07 +0000212\cfunction{PyErr_*()} functions --- one has already been called by \var{g}.
Guido van Rossumb92112d1995-03-20 14:24:09 +0000213\var{f}'s caller is then supposed to also return an error indication
Fred Draked7bb3031998-03-03 17:52:07 +0000214to \emph{its} caller, again \emph{without} calling \cfunction{PyErr_*()},
Guido van Rossumb92112d1995-03-20 14:24:09 +0000215and so on --- the most detailed cause of the error was already
216reported by the function that first detected it. Once the error
217reaches the Python interpreter's main loop, this aborts the currently
218executing Python code and tries to find an exception handler specified
219by the Python programmer.
Guido van Rossum6938f061994-08-01 12:22:53 +0000220
221(There are situations where a module can actually give a more detailed
Fred Draked7bb3031998-03-03 17:52:07 +0000222error message by calling another \cfunction{PyErr_*()} function, and in
Guido van Rossumb92112d1995-03-20 14:24:09 +0000223such cases it is fine to do so. As a general rule, however, this is
224not necessary, and can cause information about the cause of the error
225to be lost: most operations can fail for a variety of reasons.)
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000226
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000227To ignore an exception set by a function call that failed, the exception
Fred Draked7bb3031998-03-03 17:52:07 +0000228condition must be cleared explicitly by calling \cfunction{PyErr_Clear()}.
Fred Drakeec9fbe91999-02-15 16:20:25 +0000229The only time C code should call \cfunction{PyErr_Clear()} is if it doesn't
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000230want to pass the error on to the interpreter but wants to handle it
Fred Drake33698f81999-02-16 23:06:32 +0000231completely by itself (e.g.\ by trying something else or pretending
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000232nothing happened).
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000233
Fred Draked7bb3031998-03-03 17:52:07 +0000234Note that a failing \cfunction{malloc()} call must be turned into an
235exception --- the direct caller of \cfunction{malloc()} (or
236\cfunction{realloc()}) must call \cfunction{PyErr_NoMemory()} and
237return a failure indicator itself. All the object-creating functions
238(\cfunction{PyInt_FromLong()} etc.) already do this, so only if you
239call \cfunction{malloc()} directly this note is of importance.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000240
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000241Also note that, with the important exception of
Fred Drake3da06a61998-02-26 18:49:12 +0000242\cfunction{PyArg_ParseTuple()} and friends, functions that return an
Guido van Rossumb92112d1995-03-20 14:24:09 +0000243integer status usually return a positive value or zero for success and
244\code{-1} for failure, like \UNIX{} system calls.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000245
Fred Draked7bb3031998-03-03 17:52:07 +0000246Finally, be careful to clean up garbage (by making
247\cfunction{Py_XDECREF()} or \cfunction{Py_DECREF()} calls for objects
248you have already created) when you return an error indicator!
Guido van Rossum6938f061994-08-01 12:22:53 +0000249
250The choice of which exception to raise is entirely yours. There are
Fred Drakeec9fbe91999-02-15 16:20:25 +0000251predeclared C objects corresponding to all built-in Python exceptions,
Fred Drakeabfd7d61999-02-16 17:34:51 +0000252e.g.\ \cdata{PyExc_ZeroDivisionError}, which you can use directly. Of
Guido van Rossumb92112d1995-03-20 14:24:09 +0000253course, you should choose exceptions wisely --- don't use
Fred Draked7bb3031998-03-03 17:52:07 +0000254\cdata{PyExc_TypeError} to mean that a file couldn't be opened (that
255should probably be \cdata{PyExc_IOError}). If something's wrong with
Fred Drake3da06a61998-02-26 18:49:12 +0000256the argument list, the \cfunction{PyArg_ParseTuple()} function usually
Fred Draked7bb3031998-03-03 17:52:07 +0000257raises \cdata{PyExc_TypeError}. If you have an argument whose value
Fred Drakedc12ec81999-03-09 18:36:55 +0000258must be in a particular range or must satisfy other conditions,
Fred Draked7bb3031998-03-03 17:52:07 +0000259\cdata{PyExc_ValueError} is appropriate.
Guido van Rossum6938f061994-08-01 12:22:53 +0000260
261You can also define a new exception that is unique to your module.
262For this, you usually declare a static object variable at the
263beginning of your file, e.g.
264
Fred Drake1e11a5c1998-02-13 07:11:32 +0000265\begin{verbatim}
266static PyObject *SpamError;
267\end{verbatim}
268
Guido van Rossum6938f061994-08-01 12:22:53 +0000269and initialize it in your module's initialization function
Fred Drake33698f81999-02-16 23:06:32 +0000270(\cfunction{initspam()}) with an exception object, e.g.\ (leaving out
Fred Draked7bb3031998-03-03 17:52:07 +0000271the error checking for now):
Guido van Rossum6938f061994-08-01 12:22:53 +0000272
Fred Drake1e11a5c1998-02-13 07:11:32 +0000273\begin{verbatim}
274void
275initspam()
276{
277 PyObject *m, *d;
Fred Drakea0dbddf1998-04-02 06:50:02 +0000278
Fred Drake1e11a5c1998-02-13 07:11:32 +0000279 m = Py_InitModule("spam", SpamMethods);
280 d = PyModule_GetDict(m);
Fred Draked7bb3031998-03-03 17:52:07 +0000281 SpamError = PyErr_NewException("spam.error", NULL, NULL);
Fred Drake1e11a5c1998-02-13 07:11:32 +0000282 PyDict_SetItemString(d, "error", SpamError);
283}
284\end{verbatim}
285
Guido van Rossumb92112d1995-03-20 14:24:09 +0000286Note that the Python name for the exception object is
Fred Draked7bb3031998-03-03 17:52:07 +0000287\exception{spam.error}. The \cfunction{PyErr_NewException()} function
288may create either a string or class, depending on whether the
289\samp{-X} flag was passed to the interpreter. If \samp{-X} was used,
290\cdata{SpamError} will be a string object, otherwise it will be a
291class object with the base class being \exception{Exception},
292described in the \emph{Python Library Reference} under ``Built-in
293Exceptions.''
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000294
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000295
Fred Drake5e8aa541998-11-16 18:34:07 +0000296\section{Back to the Example
297 \label{backToExample}}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000298
299Going back to our example function, you should now be able to
300understand this statement:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000301
Fred Drake1e11a5c1998-02-13 07:11:32 +0000302\begin{verbatim}
303 if (!PyArg_ParseTuple(args, "s", &command))
304 return NULL;
305\end{verbatim}
306
Fred Drake0fd82681998-01-09 05:39:38 +0000307It returns \NULL{} (the error indicator for functions returning
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000308object pointers) if an error is detected in the argument list, relying
Fred Drake3da06a61998-02-26 18:49:12 +0000309on the exception set by \cfunction{PyArg_ParseTuple()}. Otherwise the
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000310string value of the argument has been copied to the local variable
Fred Draked7bb3031998-03-03 17:52:07 +0000311\cdata{command}. This is a pointer assignment and you are not supposed
Fred Drakeec9fbe91999-02-15 16:20:25 +0000312to modify the string to which it points (so in Standard C, the variable
Fred Draked7bb3031998-03-03 17:52:07 +0000313\cdata{command} should properly be declared as \samp{const char
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000314*command}).
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000315
Fred Draked7bb3031998-03-03 17:52:07 +0000316The next statement is a call to the \UNIX{} function
317\cfunction{system()}, passing it the string we just got from
318\cfunction{PyArg_ParseTuple()}:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000319
Fred Drake1e11a5c1998-02-13 07:11:32 +0000320\begin{verbatim}
321 sts = system(command);
322\end{verbatim}
323
Fred Draked7bb3031998-03-03 17:52:07 +0000324Our \function{spam.system()} function must return the value of
325\cdata{sts} as a Python object. This is done using the function
326\cfunction{Py_BuildValue()}, which is something like the inverse of
327\cfunction{PyArg_ParseTuple()}: it takes a format string and an
Fred Drakeec9fbe91999-02-15 16:20:25 +0000328arbitrary number of C values, and returns a new Python object.
Fred Draked7bb3031998-03-03 17:52:07 +0000329More info on \cfunction{Py_BuildValue()} is given later.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000330
Fred Drake1e11a5c1998-02-13 07:11:32 +0000331\begin{verbatim}
332 return Py_BuildValue("i", sts);
333\end{verbatim}
334
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000335In this case, it will return an integer object. (Yes, even integers
336are objects on the heap in Python!)
Guido van Rossum6938f061994-08-01 12:22:53 +0000337
Fred Drakeec9fbe91999-02-15 16:20:25 +0000338If you have a C function that returns no useful argument (a function
Fred Draked7bb3031998-03-03 17:52:07 +0000339returning \ctype{void}), the corresponding Python function must return
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000340\code{None}. You need this idiom to do so:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000341
Fred Drake1e11a5c1998-02-13 07:11:32 +0000342\begin{verbatim}
343 Py_INCREF(Py_None);
344 return Py_None;
345\end{verbatim}
346
Fred Drakeec9fbe91999-02-15 16:20:25 +0000347\cdata{Py_None} is the C name for the special Python object
Fred Drakea0dbddf1998-04-02 06:50:02 +0000348\code{None}. It is a genuine Python object rather than a \NULL{}
349pointer, which means ``error'' in most contexts, as we have seen.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000350
351
Fred Drake5e8aa541998-11-16 18:34:07 +0000352\section{The Module's Method Table and Initialization Function
353 \label{methodTable}}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000354
Fred Draked7bb3031998-03-03 17:52:07 +0000355I promised to show how \cfunction{spam_system()} is called from Python
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000356programs. First, we need to list its name and address in a ``method
357table'':
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000358
Fred Drake1e11a5c1998-02-13 07:11:32 +0000359\begin{verbatim}
360static PyMethodDef SpamMethods[] = {
361 ...
362 {"system", spam_system, METH_VARARGS},
363 ...
364 {NULL, NULL} /* Sentinel */
365};
366\end{verbatim}
367
Fred Drake0fd82681998-01-09 05:39:38 +0000368Note the third entry (\samp{METH_VARARGS}). This is a flag telling
Fred Drakeec9fbe91999-02-15 16:20:25 +0000369the interpreter the calling convention to be used for the C
Fred Drake0fd82681998-01-09 05:39:38 +0000370function. It should normally always be \samp{METH_VARARGS} or
Fred Drakea0dbddf1998-04-02 06:50:02 +0000371\samp{METH_VARARGS | METH_KEYWORDS}; a value of \code{0} means that an
Fred Drake3da06a61998-02-26 18:49:12 +0000372obsolete variant of \cfunction{PyArg_ParseTuple()} is used.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000373
Fred Drakeb6e50321998-02-04 20:26:31 +0000374When using only \samp{METH_VARARGS}, the function should expect
375the Python-level parameters to be passed in as a tuple acceptable for
376parsing via \cfunction{PyArg_ParseTuple()}; more information on this
377function is provided below.
378
Fred Draked7bb3031998-03-03 17:52:07 +0000379The \constant{METH_KEYWORDS} bit may be set in the third field if keyword
Fred Drakeec9fbe91999-02-15 16:20:25 +0000380arguments should be passed to the function. In this case, the C
Fred Drake0fd82681998-01-09 05:39:38 +0000381function should accept a third \samp{PyObject *} parameter which will
Fred Drake3da06a61998-02-26 18:49:12 +0000382be a dictionary of keywords. Use \cfunction{PyArg_ParseTupleAndKeywords()}
Fred Drakedc12ec81999-03-09 18:36:55 +0000383to parse the arguments to such a function.
Fred Drake0fd82681998-01-09 05:39:38 +0000384
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000385The method table must be passed to the interpreter in the module's
386initialization function (which should be the only non-\code{static}
387item defined in the module file):
388
Fred Drake1e11a5c1998-02-13 07:11:32 +0000389\begin{verbatim}
390void
391initspam()
392{
393 (void) Py_InitModule("spam", SpamMethods);
394}
395\end{verbatim}
396
Fred Draked7bb3031998-03-03 17:52:07 +0000397When the Python program imports module \module{spam} for the first
398time, \cfunction{initspam()} is called. It calls
399\cfunction{Py_InitModule()}, which creates a ``module object'' (which
400is inserted in the dictionary \code{sys.modules} under the key
401\code{"spam"}), and inserts built-in function objects into the newly
402created module based upon the table (an array of \ctype{PyMethodDef}
403structures) that was passed as its second argument.
404\cfunction{Py_InitModule()} returns a pointer to the module object
405that it creates (which is unused here). It aborts with a fatal error
406if the module could not be initialized satisfactorily, so the caller
407doesn't need to check for errors.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000408
Fred Drakea48a0831999-06-18 19:17:28 +0000409\strong{Note:} Removing entries from \code{sys.modules} or importing
410compiled modules into multiple interpreters within a process (or
411following a \cfunction{fork()} without an intervening
412\cfunction{exec()}) can create problems for some extension modules.
413Extension module authors should exercise caution when initializing
414internal data structures.
415
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000416
Fred Drake5e8aa541998-11-16 18:34:07 +0000417\section{Compilation and Linkage
418 \label{compilation}}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000419
Guido van Rossumb92112d1995-03-20 14:24:09 +0000420There are two more things to do before you can use your new extension:
421compiling and linking it with the Python system. If you use dynamic
422loading, the details depend on the style of dynamic loading your
Fred Drakea0dbddf1998-04-02 06:50:02 +0000423system uses; see the chapter ``Dynamic Loading'' for more information
424about this.
Guido van Rossum6938f061994-08-01 12:22:53 +0000425
426If you can't use dynamic loading, or if you want to make your module a
427permanent part of the Python interpreter, you will have to change the
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000428configuration setup and rebuild the interpreter. Luckily, this is
429very simple: just place your file (\file{spammodule.c} for example) in
Fred Drakea4a90dd1999-04-29 02:44:50 +0000430the \file{Modules/} directory of an unpacked source distribution, add
431a line to the file \file{Modules/Setup.local} describing your file:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000432
Fred Drake1e11a5c1998-02-13 07:11:32 +0000433\begin{verbatim}
434spam spammodule.o
435\end{verbatim}
436
Fred Draked7bb3031998-03-03 17:52:07 +0000437and rebuild the interpreter by running \program{make} in the toplevel
Fred Drakea4a90dd1999-04-29 02:44:50 +0000438directory. You can also run \program{make} in the \file{Modules/}
Fred Drakea0dbddf1998-04-02 06:50:02 +0000439subdirectory, but then you must first rebuild \file{Makefile}
Fred Draked7bb3031998-03-03 17:52:07 +0000440there by running `\program{make} Makefile'. (This is necessary each
441time you change the \file{Setup} file.)
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000442
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000443If your module requires additional libraries to link with, these can
Fred Drakea0dbddf1998-04-02 06:50:02 +0000444be listed on the line in the configuration file as well, for instance:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000445
Fred Drake1e11a5c1998-02-13 07:11:32 +0000446\begin{verbatim}
447spam spammodule.o -lX11
448\end{verbatim}
449
Fred Drakeec9fbe91999-02-15 16:20:25 +0000450\section{Calling Python Functions from C
Fred Drake5e8aa541998-11-16 18:34:07 +0000451 \label{callingPython}}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000452
Fred Drakeec9fbe91999-02-15 16:20:25 +0000453So far we have concentrated on making C functions callable from
454Python. The reverse is also useful: calling Python functions from C.
Guido van Rossum6938f061994-08-01 12:22:53 +0000455This is especially the case for libraries that support so-called
Fred Drakeec9fbe91999-02-15 16:20:25 +0000456``callback'' functions. If a C interface makes use of callbacks, the
Guido van Rossum6938f061994-08-01 12:22:53 +0000457equivalent Python often needs to provide a callback mechanism to the
458Python programmer; the implementation will require calling the Python
Fred Drakeec9fbe91999-02-15 16:20:25 +0000459callback functions from a C callback. Other uses are also imaginable.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000460
461Fortunately, the Python interpreter is easily called recursively, and
Guido van Rossum6938f061994-08-01 12:22:53 +0000462there is a standard interface to call a Python function. (I won't
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000463dwell on how to call the Python parser with a particular string as
Guido van Rossumdb65a6c1993-11-05 17:11:16 +0000464input --- if you're interested, have a look at the implementation of
Fred Drake5e8aa541998-11-16 18:34:07 +0000465the \samp{-c} command line option in \file{Python/pythonmain.c} from
466the Python source code.)
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000467
468Calling a Python function is easy. First, the Python program must
469somehow pass you the Python function object. You should provide a
470function (or some other interface) to do this. When this function is
471called, save a pointer to the Python function object (be careful to
Fred Drakedc12ec81999-03-09 18:36:55 +0000472\cfunction{Py_INCREF()} it!) in a global variable --- or wherever you
Fred Draked7bb3031998-03-03 17:52:07 +0000473see fit. For example, the following function might be part of a module
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000474definition:
475
Fred Drake1e11a5c1998-02-13 07:11:32 +0000476\begin{verbatim}
477static PyObject *my_callback = NULL;
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000478
Fred Drake1e11a5c1998-02-13 07:11:32 +0000479static PyObject *
480my_set_callback(dummy, arg)
481 PyObject *dummy, *arg;
482{
Fred Drake5e8aa541998-11-16 18:34:07 +0000483 PyObject *result = NULL;
484 PyObject *temp;
485
486 if (PyArg_ParseTuple(args, "O:set_callback", &temp)) {
487 if (!PyCallable_Check(temp)) {
488 PyErr_SetString(PyExc_TypeError, "parameter must be callable");
489 return NULL;
490 }
491 Py_XINCREF(temp); /* Add a reference to new callback */
492 Py_XDECREF(my_callback); /* Dispose of previous callback */
493 my_callback = temp; /* Remember new callback */
494 /* Boilerplate to return "None" */
495 Py_INCREF(Py_None);
496 result = Py_None;
497 }
498 return result;
Fred Drake1e11a5c1998-02-13 07:11:32 +0000499}
500\end{verbatim}
501
Fred Drake5e8aa541998-11-16 18:34:07 +0000502This function must be registered with the interpreter using the
Fred Drake5f342ac1999-04-29 02:47:40 +0000503\constant{METH_VARARGS} flag; this is described in section
Fred Drake5e8aa541998-11-16 18:34:07 +0000504\ref{methodTable}, ``The Module's Method Table and Initialization
505Function.'' The \cfunction{PyArg_ParseTuple()} function and its
Fred Drake5f342ac1999-04-29 02:47:40 +0000506arguments are documented in section \ref{parseTuple}, ``Format Strings
Fred Drake5e8aa541998-11-16 18:34:07 +0000507for \cfunction{PyArg_ParseTuple()}.''
508
Fred Draked7bb3031998-03-03 17:52:07 +0000509The macros \cfunction{Py_XINCREF()} and \cfunction{Py_XDECREF()}
510increment/decrement the reference count of an object and are safe in
Fred Drake5e8aa541998-11-16 18:34:07 +0000511the presence of \NULL{} pointers (but note that \var{temp} will not be
Fred Drake5f342ac1999-04-29 02:47:40 +0000512\NULL{} in this context). More info on them in section
Fred Drake5e8aa541998-11-16 18:34:07 +0000513\ref{refcounts}, ``Reference Counts.''
Guido van Rossum6938f061994-08-01 12:22:53 +0000514
Fred Drakeec9fbe91999-02-15 16:20:25 +0000515Later, when it is time to call the function, you call the C function
Fred Draked7bb3031998-03-03 17:52:07 +0000516\cfunction{PyEval_CallObject()}. This function has two arguments, both
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000517pointers to arbitrary Python objects: the Python function, and the
518argument list. The argument list must always be a tuple object, whose
519length is the number of arguments. To call the Python function with
520no arguments, pass an empty tuple; to call it with one argument, pass
Fred Draked7bb3031998-03-03 17:52:07 +0000521a singleton tuple. \cfunction{Py_BuildValue()} returns a tuple when its
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000522format string consists of zero or more format codes between
523parentheses. For example:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000524
Fred Drake1e11a5c1998-02-13 07:11:32 +0000525\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000526 int arg;
527 PyObject *arglist;
528 PyObject *result;
529 ...
530 arg = 123;
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000531 ...
532 /* Time to call the callback */
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000533 arglist = Py_BuildValue("(i)", arg);
534 result = PyEval_CallObject(my_callback, arglist);
535 Py_DECREF(arglist);
Fred Drake1e11a5c1998-02-13 07:11:32 +0000536\end{verbatim}
537
Fred Draked7bb3031998-03-03 17:52:07 +0000538\cfunction{PyEval_CallObject()} returns a Python object pointer: this is
539the return value of the Python function. \cfunction{PyEval_CallObject()} is
Guido van Rossumb92112d1995-03-20 14:24:09 +0000540``reference-count-neutral'' with respect to its arguments. In the
Guido van Rossum6938f061994-08-01 12:22:53 +0000541example a new tuple was created to serve as the argument list, which
Fred Draked7bb3031998-03-03 17:52:07 +0000542is \cfunction{Py_DECREF()}-ed immediately after the call.
Guido van Rossum6938f061994-08-01 12:22:53 +0000543
Fred Draked7bb3031998-03-03 17:52:07 +0000544The return value of \cfunction{PyEval_CallObject()} is ``new'': either it
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000545is a brand new object, or it is an existing object whose reference
546count has been incremented. So, unless you want to save it in a
Fred Draked7bb3031998-03-03 17:52:07 +0000547global variable, you should somehow \cfunction{Py_DECREF()} the result,
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000548even (especially!) if you are not interested in its value.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000549
550Before you do this, however, it is important to check that the return
Fred Draked7bb3031998-03-03 17:52:07 +0000551value isn't \NULL{}. If it is, the Python function terminated by
Fred Drakeec9fbe91999-02-15 16:20:25 +0000552raising an exception. If the C code that called
Fred Draked7bb3031998-03-03 17:52:07 +0000553\cfunction{PyEval_CallObject()} is called from Python, it should now
554return an error indication to its Python caller, so the interpreter
555can print a stack trace, or the calling Python code can handle the
556exception. If this is not possible or desirable, the exception should
557be cleared by calling \cfunction{PyErr_Clear()}. For example:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000558
Fred Drake1e11a5c1998-02-13 07:11:32 +0000559\begin{verbatim}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000560 if (result == NULL)
561 return NULL; /* Pass error back */
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000562 ...use result...
563 Py_DECREF(result);
Fred Drake1e11a5c1998-02-13 07:11:32 +0000564\end{verbatim}
565
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000566Depending on the desired interface to the Python callback function,
Fred Draked7bb3031998-03-03 17:52:07 +0000567you may also have to provide an argument list to
568\cfunction{PyEval_CallObject()}. In some cases the argument list is
569also provided by the Python program, through the same interface that
570specified the callback function. It can then be saved and used in the
571same manner as the function object. In other cases, you may have to
572construct a new tuple to pass as the argument list. The simplest way
573to do this is to call \cfunction{Py_BuildValue()}. For example, if
574you want to pass an integral event code, you might use the following
575code:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000576
Fred Drake1e11a5c1998-02-13 07:11:32 +0000577\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000578 PyObject *arglist;
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000579 ...
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000580 arglist = Py_BuildValue("(l)", eventcode);
581 result = PyEval_CallObject(my_callback, arglist);
582 Py_DECREF(arglist);
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000583 if (result == NULL)
584 return NULL; /* Pass error back */
585 /* Here maybe use the result */
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000586 Py_DECREF(result);
Fred Drake1e11a5c1998-02-13 07:11:32 +0000587\end{verbatim}
588
Fred Draked7bb3031998-03-03 17:52:07 +0000589Note the placement of \samp{Py_DECREF(arglist)} immediately after the
590call, before the error check! Also note that strictly spoken this
591code is not complete: \cfunction{Py_BuildValue()} may run out of
592memory, and this should be checked.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000593
594
Fred Drake5e8aa541998-11-16 18:34:07 +0000595\section{Format Strings for \cfunction{PyArg_ParseTuple()}
596 \label{parseTuple}}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000597
Fred Drake3da06a61998-02-26 18:49:12 +0000598The \cfunction{PyArg_ParseTuple()} function is declared as follows:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000599
Fred Drake1e11a5c1998-02-13 07:11:32 +0000600\begin{verbatim}
601int PyArg_ParseTuple(PyObject *arg, char *format, ...);
602\end{verbatim}
603
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000604The \var{arg} argument must be a tuple object containing an argument
Fred Drakeec9fbe91999-02-15 16:20:25 +0000605list passed from Python to a C function. The \var{format} argument
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000606must be a format string, whose syntax is explained below. The
607remaining arguments must be addresses of variables whose type is
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000608determined by the format string. For the conversion to succeed, the
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000609\var{arg} object must match the format and the format must be
610exhausted.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000611
Fred Drake3da06a61998-02-26 18:49:12 +0000612Note that while \cfunction{PyArg_ParseTuple()} checks that the Python
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000613arguments have the required types, it cannot check the validity of the
Fred Drakeec9fbe91999-02-15 16:20:25 +0000614addresses of C variables passed to the call: if you make mistakes
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000615there, your code will probably crash or at least overwrite random bits
616in memory. So be careful!
617
618A format string consists of zero or more ``format units''. A format
619unit describes one Python object; it is usually a single character or
620a parenthesized sequence of format units. With a few exceptions, a
621format unit that is not a parenthesized sequence normally corresponds
Fred Drake3da06a61998-02-26 18:49:12 +0000622to a single address argument to \cfunction{PyArg_ParseTuple()}. In the
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000623following description, the quoted form is the format unit; the entry
624in (round) parentheses is the Python object type that matches the
Fred Drakeec9fbe91999-02-15 16:20:25 +0000625format unit; and the entry in [square] brackets is the type of the C
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000626variable(s) whose address should be passed. (Use the \samp{\&}
627operator to pass a variable's address.)
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000628
Guido van Rossumdb65a6c1993-11-05 17:11:16 +0000629\begin{description}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000630
Fred Drake3fe985f1998-03-04 03:51:42 +0000631\item[\samp{s} (string) {[char *]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000632Convert a Python string to a C pointer to a character string. You
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000633must not provide storage for the string itself; a pointer to an
634existing string is stored into the character pointer variable whose
Fred Drakeec9fbe91999-02-15 16:20:25 +0000635address you pass. The C string is null-terminated. The Python string
Fred Drake3da06a61998-02-26 18:49:12 +0000636must not contain embedded null bytes; if it does, a \exception{TypeError}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000637exception is raised.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000638
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000639\item[\samp{s\#} (string) {[char *, int]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000640This variant on \samp{s} stores into two C variables, the first one
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000641a pointer to a character string, the second one its length. In this
642case the Python string may contain embedded null bytes.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000643
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000644\item[\samp{z} (string or \code{None}) {[char *]}]
645Like \samp{s}, but the Python object may also be \code{None}, in which
Fred Drakeec9fbe91999-02-15 16:20:25 +0000646case the C pointer is set to \NULL{}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000647
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000648\item[\samp{z\#} (string or \code{None}) {[char *, int]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000649This is to \samp{s\#} as \samp{z} is to \samp{s}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000650
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000651\item[\samp{b} (integer) {[char]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000652Convert a Python integer to a tiny int, stored in a C \ctype{char}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000653
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000654\item[\samp{h} (integer) {[short int]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000655Convert a Python integer to a C \ctype{short int}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000656
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000657\item[\samp{i} (integer) {[int]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000658Convert a Python integer to a plain C \ctype{int}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000659
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000660\item[\samp{l} (integer) {[long int]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000661Convert a Python integer to a C \ctype{long int}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000662
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000663\item[\samp{c} (string of length 1) {[char]}]
664Convert a Python character, represented as a string of length 1, to a
Fred Drakeec9fbe91999-02-15 16:20:25 +0000665C \ctype{char}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000666
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000667\item[\samp{f} (float) {[float]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000668Convert a Python floating point number to a C \ctype{float}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000669
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000670\item[\samp{d} (float) {[double]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000671Convert a Python floating point number to a C \ctype{double}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000672
Fred Drakeb6e50321998-02-04 20:26:31 +0000673\item[\samp{D} (complex) {[Py_complex]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000674Convert a Python complex number to a C \ctype{Py_complex} structure.
Fred Drakeb6e50321998-02-04 20:26:31 +0000675
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000676\item[\samp{O} (object) {[PyObject *]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000677Store a Python object (without any conversion) in a C object pointer.
678The C program thus receives the actual object that was passed. The
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000679object's reference count is not increased. The pointer stored is not
Fred Drake0fd82681998-01-09 05:39:38 +0000680\NULL{}.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000681
Fred Drake3fe985f1998-03-04 03:51:42 +0000682\item[\samp{O!} (object) {[\var{typeobject}, PyObject *]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000683Store a Python object in a C object pointer. This is similar to
684\samp{O}, but takes two C arguments: the first is the address of a
685Python type object, the second is the address of the C variable (of
Fred Draked7bb3031998-03-03 17:52:07 +0000686type \ctype{PyObject *}) into which the object pointer is stored.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000687If the Python object does not have the required type, a
Fred Draked7bb3031998-03-03 17:52:07 +0000688\exception{TypeError} exception is raised.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000689
Fred Drake3fe985f1998-03-04 03:51:42 +0000690\item[\samp{O\&} (object) {[\var{converter}, \var{anything}]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000691Convert a Python object to a C variable through a \var{converter}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000692function. This takes two arguments: the first is a function, the
Fred Drakeec9fbe91999-02-15 16:20:25 +0000693second is the address of a C variable (of arbitrary type), converted
Fred Draked7bb3031998-03-03 17:52:07 +0000694to \ctype{void *}. The \var{converter} function in turn is called as
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000695follows:
696
697\code{\var{status} = \var{converter}(\var{object}, \var{address});}
698
699where \var{object} is the Python object to be converted and
Fred Draked7bb3031998-03-03 17:52:07 +0000700\var{address} is the \ctype{void *} argument that was passed to
701\cfunction{PyArg_ConvertTuple()}. The returned \var{status} should be
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000702\code{1} for a successful conversion and \code{0} if the conversion
703has failed. When the conversion fails, the \var{converter} function
704should raise an exception.
705
706\item[\samp{S} (string) {[PyStringObject *]}]
Guido van Rossum2474d681998-02-26 17:07:11 +0000707Like \samp{O} but requires that the Python object is a string object.
Fred Draked7bb3031998-03-03 17:52:07 +0000708Raises a \exception{TypeError} exception if the object is not a string
Fred Drakeec9fbe91999-02-15 16:20:25 +0000709object. The C variable may also be declared as \ctype{PyObject *}.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000710
Fred Drake3fe985f1998-03-04 03:51:42 +0000711\item[\samp{(\var{items})} (tuple) {[\var{matching-items}]}]
Fred Drake29fb54f1999-02-18 03:50:01 +0000712The object must be a Python sequence whose length is the number of
713format units in \var{items}. The C arguments must correspond to the
714individual format units in \var{items}. Format units for sequences
715may be nested.
716
717\strong{Note:} Prior to Python version 1.5.2, this format specifier
718only accepted a tuple containing the individual parameters, not an
719arbitrary sequence. Code which previously caused a
720\exception{TypeError} to be raised here may now proceed without an
721exception. This is not expected to be a problem for existing code.
Guido van Rossumdb65a6c1993-11-05 17:11:16 +0000722
723\end{description}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000724
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000725It is possible to pass Python long integers where integers are
Fred Drake1aedbd81998-02-16 14:47:27 +0000726requested; however no proper range checking is done --- the most
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000727significant bits are silently truncated when the receiving field is
728too small to receive the value (actually, the semantics are inherited
Fred Drakedc12ec81999-03-09 18:36:55 +0000729from downcasts in C --- your mileage may vary).
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000730
731A few other characters have a meaning in a format string. These may
732not occur inside nested parentheses. They are:
733
734\begin{description}
735
736\item[\samp{|}]
737Indicates that the remaining arguments in the Python argument list are
Fred Drakeec9fbe91999-02-15 16:20:25 +0000738optional. The C variables corresponding to optional arguments should
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000739be initialized to their default value --- when an optional argument is
Fred Drake40e72f71998-03-03 19:37:38 +0000740not specified, \cfunction{PyArg_ParseTuple()} does not touch the contents
Fred Drakeec9fbe91999-02-15 16:20:25 +0000741of the corresponding C variable(s).
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000742
743\item[\samp{:}]
744The list of format units ends here; the string after the colon is used
745as the function name in error messages (the ``associated value'' of
Fred Drakedc12ec81999-03-09 18:36:55 +0000746the exception that \cfunction{PyArg_ParseTuple()} raises).
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000747
748\item[\samp{;}]
749The list of format units ends here; the string after the colon is used
750as the error message \emph{instead} of the default error message.
751Clearly, \samp{:} and \samp{;} mutually exclude each other.
752
753\end{description}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000754
755Some example calls:
756
Fred Drake0fd82681998-01-09 05:39:38 +0000757\begin{verbatim}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000758 int ok;
759 int i, j;
760 long k, l;
761 char *s;
762 int size;
763
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000764 ok = PyArg_ParseTuple(args, ""); /* No arguments */
Guido van Rossum6938f061994-08-01 12:22:53 +0000765 /* Python call: f() */
Fred Drake33698f81999-02-16 23:06:32 +0000766\end{verbatim}
Fred Drake0fd82681998-01-09 05:39:38 +0000767
Fred Drake33698f81999-02-16 23:06:32 +0000768\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000769 ok = PyArg_ParseTuple(args, "s", &s); /* A string */
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000770 /* Possible Python call: f('whoops!') */
Fred Drake33698f81999-02-16 23:06:32 +0000771\end{verbatim}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000772
Fred Drake33698f81999-02-16 23:06:32 +0000773\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000774 ok = PyArg_ParseTuple(args, "lls", &k, &l, &s); /* Two longs and a string */
Guido van Rossum6938f061994-08-01 12:22:53 +0000775 /* Possible Python call: f(1, 2, 'three') */
Fred Drake33698f81999-02-16 23:06:32 +0000776\end{verbatim}
Fred Drake0fd82681998-01-09 05:39:38 +0000777
Fred Drake33698f81999-02-16 23:06:32 +0000778\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000779 ok = PyArg_ParseTuple(args, "(ii)s#", &i, &j, &s, &size);
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000780 /* A pair of ints and a string, whose size is also returned */
Guido van Rossum7e924dd1997-02-10 16:51:52 +0000781 /* Possible Python call: f((1, 2), 'three') */
Fred Drake33698f81999-02-16 23:06:32 +0000782\end{verbatim}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000783
Fred Drake33698f81999-02-16 23:06:32 +0000784\begin{verbatim}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000785 {
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000786 char *file;
787 char *mode = "r";
788 int bufsize = 0;
789 ok = PyArg_ParseTuple(args, "s|si", &file, &mode, &bufsize);
790 /* A string, and optionally another string and an integer */
791 /* Possible Python calls:
792 f('spam')
793 f('spam', 'w')
794 f('spam', 'wb', 100000) */
795 }
Fred Drake33698f81999-02-16 23:06:32 +0000796\end{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000797
Fred Drake33698f81999-02-16 23:06:32 +0000798\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000799 {
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000800 int left, top, right, bottom, h, v;
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000801 ok = PyArg_ParseTuple(args, "((ii)(ii))(ii)",
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000802 &left, &top, &right, &bottom, &h, &v);
Fred Drakea0dbddf1998-04-02 06:50:02 +0000803 /* A rectangle and a point */
804 /* Possible Python call:
805 f(((0, 0), (400, 300)), (10, 10)) */
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000806 }
Fred Drake33698f81999-02-16 23:06:32 +0000807\end{verbatim}
Fred Drakeb6e50321998-02-04 20:26:31 +0000808
Fred Drake33698f81999-02-16 23:06:32 +0000809\begin{verbatim}
Fred Drakeb6e50321998-02-04 20:26:31 +0000810 {
811 Py_complex c;
812 ok = PyArg_ParseTuple(args, "D:myfunction", &c);
813 /* a complex, also providing a function name for errors */
814 /* Possible Python call: myfunction(1+2j) */
815 }
Fred Drake0fd82681998-01-09 05:39:38 +0000816\end{verbatim}
Fred Drakeb6e50321998-02-04 20:26:31 +0000817
818
Fred Drake5e8aa541998-11-16 18:34:07 +0000819\section{Keyword Parsing with \cfunction{PyArg_ParseTupleAndKeywords()}
820 \label{parseTupleAndKeywords}}
Fred Drakeb6e50321998-02-04 20:26:31 +0000821
822The \cfunction{PyArg_ParseTupleAndKeywords()} function is declared as
823follows:
824
Fred Drake1e11a5c1998-02-13 07:11:32 +0000825\begin{verbatim}
826int PyArg_ParseTupleAndKeywords(PyObject *arg, PyObject *kwdict,
827 char *format, char **kwlist, ...);
828\end{verbatim}
Fred Drakeb6e50321998-02-04 20:26:31 +0000829
830The \var{arg} and \var{format} parameters are identical to those of the
831\cfunction{PyArg_ParseTuple()} function. The \var{kwdict} parameter
832is the dictionary of keywords received as the third parameter from the
833Python runtime. The \var{kwlist} parameter is a \NULL{}-terminated
834list of strings which identify the parameters; the names are matched
835with the type information from \var{format} from left to right.
836
837\strong{Note:} Nested tuples cannot be parsed when using keyword
838arguments! Keyword parameters passed in which are not present in the
Fred Drakecd05ca91998-03-07 05:32:08 +0000839\var{kwlist} will cause \exception{TypeError} to be raised.
Fred Drakeb6e50321998-02-04 20:26:31 +0000840
841Here is an example module which uses keywords, based on an example by
Fred Drakea0dbddf1998-04-02 06:50:02 +0000842Geoff Philbrick (\email{philbrick@hks.com}):%
843\index{Philbrick, Geoff}
Fred Drakeb6e50321998-02-04 20:26:31 +0000844
845\begin{verbatim}
846#include <stdio.h>
847#include "Python.h"
848
849static PyObject *
850keywdarg_parrot(self, args, keywds)
851 PyObject *self;
852 PyObject *args;
853 PyObject *keywds;
854{
855 int voltage;
856 char *state = "a stiff";
857 char *action = "voom";
858 char *type = "Norwegian Blue";
859
860 static char *kwlist[] = {"voltage", "state", "action", "type", NULL};
861
862 if (!PyArg_ParseTupleAndKeywords(args, keywds, "i|sss", kwlist,
863 &voltage, &state, &action, &type))
864 return NULL;
865
866 printf("-- This parrot wouldn't %s if you put %i Volts through it.\n",
867 action, voltage);
868 printf("-- Lovely plumage, the %s -- It's %s!\n", type, state);
869
870 Py_INCREF(Py_None);
871
872 return Py_None;
873}
874
875static PyMethodDef keywdarg_methods[] = {
Fred Drakedc12ec81999-03-09 18:36:55 +0000876 /* The cast of the function is necessary since PyCFunction values
877 * only take two PyObject* parameters, and keywdarg_parrot() takes
878 * three.
879 */
Fred Drakeb6e50321998-02-04 20:26:31 +0000880 {"parrot", (PyCFunction)keywdarg_parrot, METH_VARARGS|METH_KEYWORDS},
881 {NULL, NULL} /* sentinel */
882};
883
884void
885initkeywdarg()
886{
887 /* Create the module and add the functions */
Fred Drakecd05ca91998-03-07 05:32:08 +0000888 Py_InitModule("keywdarg", keywdarg_methods);
Fred Drakeb6e50321998-02-04 20:26:31 +0000889}
890\end{verbatim}
891
892
Fred Drake5e8aa541998-11-16 18:34:07 +0000893\section{The \cfunction{Py_BuildValue()} Function
894 \label{buildValue}}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000895
Fred Draked7bb3031998-03-03 17:52:07 +0000896This function is the counterpart to \cfunction{PyArg_ParseTuple()}. It is
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000897declared as follows:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000898
Fred Drake1e11a5c1998-02-13 07:11:32 +0000899\begin{verbatim}
900PyObject *Py_BuildValue(char *format, ...);
901\end{verbatim}
902
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000903It recognizes a set of format units similar to the ones recognized by
Fred Draked7bb3031998-03-03 17:52:07 +0000904\cfunction{PyArg_ParseTuple()}, but the arguments (which are input to the
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000905function, not output) must not be pointers, just values. It returns a
Fred Drakeec9fbe91999-02-15 16:20:25 +0000906new Python object, suitable for returning from a C function called
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000907from Python.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000908
Fred Draked7bb3031998-03-03 17:52:07 +0000909One difference with \cfunction{PyArg_ParseTuple()}: while the latter
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000910requires its first argument to be a tuple (since Python argument lists
Fred Draked7bb3031998-03-03 17:52:07 +0000911are always represented as tuples internally),
912\cfunction{Py_BuildValue()} does not always build a tuple. It builds
913a tuple only if its format string contains two or more format units.
914If the format string is empty, it returns \code{None}; if it contains
915exactly one format unit, it returns whatever object is described by
916that format unit. To force it to return a tuple of size 0 or one,
917parenthesize the format string.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000918
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000919In the following description, the quoted form is the format unit; the
920entry in (round) parentheses is the Python object type that the format
921unit will return; and the entry in [square] brackets is the type of
Fred Drakeec9fbe91999-02-15 16:20:25 +0000922the C value(s) to be passed.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000923
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000924The characters space, tab, colon and comma are ignored in format
925strings (but not within format units such as \samp{s\#}). This can be
926used to make long format strings a tad more readable.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000927
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000928\begin{description}
929
930\item[\samp{s} (string) {[char *]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000931Convert a null-terminated C string to a Python object. If the C
Fred Drake0fd82681998-01-09 05:39:38 +0000932string pointer is \NULL{}, \code{None} is returned.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000933
934\item[\samp{s\#} (string) {[char *, int]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000935Convert a C string and its length to a Python object. If the C string
Fred Drake0fd82681998-01-09 05:39:38 +0000936pointer is \NULL{}, the length is ignored and \code{None} is
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000937returned.
938
939\item[\samp{z} (string or \code{None}) {[char *]}]
940Same as \samp{s}.
941
942\item[\samp{z\#} (string or \code{None}) {[char *, int]}]
943Same as \samp{s\#}.
944
945\item[\samp{i} (integer) {[int]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000946Convert a plain C \ctype{int} to a Python integer object.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000947
948\item[\samp{b} (integer) {[char]}]
949Same as \samp{i}.
950
951\item[\samp{h} (integer) {[short int]}]
952Same as \samp{i}.
953
954\item[\samp{l} (integer) {[long int]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000955Convert a C \ctype{long int} to a Python integer object.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000956
957\item[\samp{c} (string of length 1) {[char]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000958Convert a C \ctype{int} representing a character to a Python string of
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000959length 1.
960
961\item[\samp{d} (float) {[double]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000962Convert a C \ctype{double} to a Python floating point number.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000963
964\item[\samp{f} (float) {[float]}]
965Same as \samp{d}.
966
967\item[\samp{O} (object) {[PyObject *]}]
968Pass a Python object untouched (except for its reference count, which
Fred Drake0fd82681998-01-09 05:39:38 +0000969is incremented by one). If the object passed in is a \NULL{}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000970pointer, it is assumed that this was caused because the call producing
971the argument found an error and set an exception. Therefore,
Fred Draked7bb3031998-03-03 17:52:07 +0000972\cfunction{Py_BuildValue()} will return \NULL{} but won't raise an
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000973exception. If no exception has been raised yet,
Fred Draked7bb3031998-03-03 17:52:07 +0000974\cdata{PyExc_SystemError} is set.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000975
976\item[\samp{S} (object) {[PyObject *]}]
977Same as \samp{O}.
978
Guido van Rossumd358afe1998-12-23 05:02:08 +0000979\item[\samp{N} (object) {[PyObject *]}]
980Same as \samp{O}, except it doesn't increment the reference count on
981the object. Useful when the object is created by a call to an object
982constructor in the argument list.
983
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000984\item[\samp{O\&} (object) {[\var{converter}, \var{anything}]}]
985Convert \var{anything} to a Python object through a \var{converter}
986function. The function is called with \var{anything} (which should be
Fred Draked7bb3031998-03-03 17:52:07 +0000987compatible with \ctype{void *}) as its argument and should return a
Fred Drake0fd82681998-01-09 05:39:38 +0000988``new'' Python object, or \NULL{} if an error occurred.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000989
990\item[\samp{(\var{items})} (tuple) {[\var{matching-items}]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000991Convert a sequence of C values to a Python tuple with the same number
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000992of items.
993
994\item[\samp{[\var{items}]} (list) {[\var{matching-items}]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000995Convert a sequence of C values to a Python list with the same number
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000996of items.
997
998\item[\samp{\{\var{items}\}} (dictionary) {[\var{matching-items}]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000999Convert a sequence of C values to a Python dictionary. Each pair of
1000consecutive C values adds one item to the dictionary, serving as key
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001001and value, respectively.
1002
1003\end{description}
1004
1005If there is an error in the format string, the
Fred Draked7bb3031998-03-03 17:52:07 +00001006\cdata{PyExc_SystemError} exception is raised and \NULL{} returned.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001007
1008Examples (to the left the call, to the right the resulting Python value):
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001009
Fred Drake1e11a5c1998-02-13 07:11:32 +00001010\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001011 Py_BuildValue("") None
1012 Py_BuildValue("i", 123) 123
Guido van Rossumf23e0fe1995-03-18 11:04:29 +00001013 Py_BuildValue("iii", 123, 456, 789) (123, 456, 789)
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001014 Py_BuildValue("s", "hello") 'hello'
1015 Py_BuildValue("ss", "hello", "world") ('hello', 'world')
1016 Py_BuildValue("s#", "hello", 4) 'hell'
1017 Py_BuildValue("()") ()
1018 Py_BuildValue("(i)", 123) (123,)
1019 Py_BuildValue("(ii)", 123, 456) (123, 456)
1020 Py_BuildValue("(i,i)", 123, 456) (123, 456)
1021 Py_BuildValue("[i,i]", 123, 456) [123, 456]
Guido van Rossumf23e0fe1995-03-18 11:04:29 +00001022 Py_BuildValue("{s:i,s:i}",
1023 "abc", 123, "def", 456) {'abc': 123, 'def': 456}
1024 Py_BuildValue("((ii)(ii)) (ii)",
1025 1, 2, 3, 4, 5, 6) (((1, 2), (3, 4)), (5, 6))
Fred Drake1e11a5c1998-02-13 07:11:32 +00001026\end{verbatim}
1027
Fred Drake8e015171999-02-17 18:12:14 +00001028
Fred Drake5e8aa541998-11-16 18:34:07 +00001029\section{Reference Counts
1030 \label{refcounts}}
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001031
Fred Drakeec9fbe91999-02-15 16:20:25 +00001032In languages like C or \Cpp{}, the programmer is responsible for
1033dynamic allocation and deallocation of memory on the heap. In C,
Fred Draked7bb3031998-03-03 17:52:07 +00001034this is done using the functions \cfunction{malloc()} and
1035\cfunction{free()}. In \Cpp{}, the operators \keyword{new} and
1036\keyword{delete} are used with essentially the same meaning; they are
1037actually implemented using \cfunction{malloc()} and
1038\cfunction{free()}, so we'll restrict the following discussion to the
1039latter.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001040
Fred Draked7bb3031998-03-03 17:52:07 +00001041Every block of memory allocated with \cfunction{malloc()} should
1042eventually be returned to the pool of available memory by exactly one
1043call to \cfunction{free()}. It is important to call
1044\cfunction{free()} at the right time. If a block's address is
1045forgotten but \cfunction{free()} is not called for it, the memory it
1046occupies cannot be reused until the program terminates. This is
1047called a \dfn{memory leak}. On the other hand, if a program calls
1048\cfunction{free()} for a block and then continues to use the block, it
1049creates a conflict with re-use of the block through another
1050\cfunction{malloc()} call. This is called \dfn{using freed memory}.
1051It has the same bad consequences as referencing uninitialized data ---
1052core dumps, wrong results, mysterious crashes.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001053
1054Common causes of memory leaks are unusual paths through the code. For
1055instance, a function may allocate a block of memory, do some
1056calculation, and then free the block again. Now a change in the
1057requirements for the function may add a test to the calculation that
1058detects an error condition and can return prematurely from the
1059function. It's easy to forget to free the allocated memory block when
1060taking this premature exit, especially when it is added later to the
1061code. Such leaks, once introduced, often go undetected for a long
1062time: the error exit is taken only in a small fraction of all calls,
1063and most modern machines have plenty of virtual memory, so the leak
1064only becomes apparent in a long-running process that uses the leaking
1065function frequently. Therefore, it's important to prevent leaks from
1066happening by having a coding convention or strategy that minimizes
1067this kind of errors.
1068
Fred Draked7bb3031998-03-03 17:52:07 +00001069Since Python makes heavy use of \cfunction{malloc()} and
1070\cfunction{free()}, it needs a strategy to avoid memory leaks as well
1071as the use of freed memory. The chosen method is called
1072\dfn{reference counting}. The principle is simple: every object
1073contains a counter, which is incremented when a reference to the
1074object is stored somewhere, and which is decremented when a reference
1075to it is deleted. When the counter reaches zero, the last reference
1076to the object has been deleted and the object is freed.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001077
1078An alternative strategy is called \dfn{automatic garbage collection}.
1079(Sometimes, reference counting is also referred to as a garbage
1080collection strategy, hence my use of ``automatic'' to distinguish the
1081two.) The big advantage of automatic garbage collection is that the
Fred Draked7bb3031998-03-03 17:52:07 +00001082user doesn't need to call \cfunction{free()} explicitly. (Another claimed
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001083advantage is an improvement in speed or memory usage --- this is no
Fred Drakeec9fbe91999-02-15 16:20:25 +00001084hard fact however.) The disadvantage is that for C, there is no
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001085truly portable automatic garbage collector, while reference counting
Fred Draked7bb3031998-03-03 17:52:07 +00001086can be implemented portably (as long as the functions \cfunction{malloc()}
Fred Drakeec9fbe91999-02-15 16:20:25 +00001087and \cfunction{free()} are available --- which the C Standard guarantees).
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001088Maybe some day a sufficiently portable automatic garbage collector
Fred Drakeec9fbe91999-02-15 16:20:25 +00001089will be available for C. Until then, we'll have to live with
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001090reference counts.
1091
Fred Drake5e8aa541998-11-16 18:34:07 +00001092\subsection{Reference Counting in Python
1093 \label{refcountsInPython}}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001094
1095There are two macros, \code{Py_INCREF(x)} and \code{Py_DECREF(x)},
1096which handle the incrementing and decrementing of the reference count.
Fred Draked7bb3031998-03-03 17:52:07 +00001097\cfunction{Py_DECREF()} also frees the object when the count reaches zero.
1098For flexibility, it doesn't call \cfunction{free()} directly --- rather, it
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001099makes a call through a function pointer in the object's \dfn{type
1100object}. For this purpose (and others), every object also contains a
1101pointer to its type object.
1102
1103The big question now remains: when to use \code{Py_INCREF(x)} and
1104\code{Py_DECREF(x)}? Let's first introduce some terms. Nobody
1105``owns'' an object; however, you can \dfn{own a reference} to an
1106object. An object's reference count is now defined as the number of
1107owned references to it. The owner of a reference is responsible for
Fred Draked7bb3031998-03-03 17:52:07 +00001108calling \cfunction{Py_DECREF()} when the reference is no longer
1109needed. Ownership of a reference can be transferred. There are three
1110ways to dispose of an owned reference: pass it on, store it, or call
1111\cfunction{Py_DECREF()}. Forgetting to dispose of an owned reference
1112creates a memory leak.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001113
1114It is also possible to \dfn{borrow}\footnote{The metaphor of
1115``borrowing'' a reference is not completely correct: the owner still
1116has a copy of the reference.} a reference to an object. The borrower
Fred Draked7bb3031998-03-03 17:52:07 +00001117of a reference should not call \cfunction{Py_DECREF()}. The borrower must
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001118not hold on to the object longer than the owner from which it was
1119borrowed. Using a borrowed reference after the owner has disposed of
1120it risks using freed memory and should be avoided
1121completely.\footnote{Checking that the reference count is at least 1
1122\strong{does not work} --- the reference count itself could be in
1123freed memory and may thus be reused for another object!}
1124
1125The advantage of borrowing over owning a reference is that you don't
1126need to take care of disposing of the reference on all possible paths
1127through the code --- in other words, with a borrowed reference you
1128don't run the risk of leaking when a premature exit is taken. The
1129disadvantage of borrowing over leaking is that there are some subtle
1130situations where in seemingly correct code a borrowed reference can be
1131used after the owner from which it was borrowed has in fact disposed
1132of it.
1133
1134A borrowed reference can be changed into an owned reference by calling
Fred Draked7bb3031998-03-03 17:52:07 +00001135\cfunction{Py_INCREF()}. This does not affect the status of the owner from
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001136which the reference was borrowed --- it creates a new owned reference,
1137and gives full owner responsibilities (i.e., the new owner must
1138dispose of the reference properly, as well as the previous owner).
1139
Fred Drake8e015171999-02-17 18:12:14 +00001140
Fred Drake5e8aa541998-11-16 18:34:07 +00001141\subsection{Ownership Rules
1142 \label{ownershipRules}}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001143
1144Whenever an object reference is passed into or out of a function, it
1145is part of the function's interface specification whether ownership is
1146transferred with the reference or not.
1147
1148Most functions that return a reference to an object pass on ownership
1149with the reference. In particular, all functions whose function it is
Fred Draked7bb3031998-03-03 17:52:07 +00001150to create a new object, e.g.\ \cfunction{PyInt_FromLong()} and
1151\cfunction{Py_BuildValue()}, pass ownership to the receiver. Even if in
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001152fact, in some cases, you don't receive a reference to a brand new
1153object, you still receive ownership of the reference. For instance,
Fred Draked7bb3031998-03-03 17:52:07 +00001154\cfunction{PyInt_FromLong()} maintains a cache of popular values and can
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001155return a reference to a cached item.
1156
1157Many functions that extract objects from other objects also transfer
1158ownership with the reference, for instance
Fred Draked7bb3031998-03-03 17:52:07 +00001159\cfunction{PyObject_GetAttrString()}. The picture is less clear, here,
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001160however, since a few common routines are exceptions:
Fred Draked7bb3031998-03-03 17:52:07 +00001161\cfunction{PyTuple_GetItem()}, \cfunction{PyList_GetItem()},
1162\cfunction{PyDict_GetItem()}, and \cfunction{PyDict_GetItemString()}
1163all return references that you borrow from the tuple, list or
1164dictionary.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001165
Fred Draked7bb3031998-03-03 17:52:07 +00001166The function \cfunction{PyImport_AddModule()} also returns a borrowed
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001167reference, even though it may actually create the object it returns:
1168this is possible because an owned reference to the object is stored in
1169\code{sys.modules}.
1170
1171When you pass an object reference into another function, in general,
1172the function borrows the reference from you --- if it needs to store
Fred Draked7bb3031998-03-03 17:52:07 +00001173it, it will use \cfunction{Py_INCREF()} to become an independent
1174owner. There are exactly two important exceptions to this rule:
1175\cfunction{PyTuple_SetItem()} and \cfunction{PyList_SetItem()}. These
1176functions take over ownership of the item passed to them --- even if
1177they fail! (Note that \cfunction{PyDict_SetItem()} and friends don't
Fred Drakea0dbddf1998-04-02 06:50:02 +00001178take over ownership --- they are ``normal.'')
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001179
Fred Drakeec9fbe91999-02-15 16:20:25 +00001180When a C function is called from Python, it borrows references to its
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001181arguments from the caller. The caller owns a reference to the object,
1182so the borrowed reference's lifetime is guaranteed until the function
1183returns. Only when such a borrowed reference must be stored or passed
1184on, it must be turned into an owned reference by calling
Fred Draked7bb3031998-03-03 17:52:07 +00001185\cfunction{Py_INCREF()}.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001186
Fred Drakeec9fbe91999-02-15 16:20:25 +00001187The object reference returned from a C function that is called from
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001188Python must be an owned reference --- ownership is tranferred from the
1189function to its caller.
1190
Fred Drake8e015171999-02-17 18:12:14 +00001191
Fred Drake5e8aa541998-11-16 18:34:07 +00001192\subsection{Thin Ice
1193 \label{thinIce}}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001194
1195There are a few situations where seemingly harmless use of a borrowed
1196reference can lead to problems. These all have to do with implicit
1197invocations of the interpreter, which can cause the owner of a
1198reference to dispose of it.
1199
1200The first and most important case to know about is using
Fred Draked7bb3031998-03-03 17:52:07 +00001201\cfunction{Py_DECREF()} on an unrelated object while borrowing a
1202reference to a list item. For instance:
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001203
Fred Drake1e11a5c1998-02-13 07:11:32 +00001204\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001205bug(PyObject *list) {
1206 PyObject *item = PyList_GetItem(list, 0);
Fred Drakea0dbddf1998-04-02 06:50:02 +00001207
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001208 PyList_SetItem(list, 1, PyInt_FromLong(0L));
1209 PyObject_Print(item, stdout, 0); /* BUG! */
1210}
Fred Drake1e11a5c1998-02-13 07:11:32 +00001211\end{verbatim}
1212
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001213This function first borrows a reference to \code{list[0]}, then
1214replaces \code{list[1]} with the value \code{0}, and finally prints
1215the borrowed reference. Looks harmless, right? But it's not!
1216
Fred Draked7bb3031998-03-03 17:52:07 +00001217Let's follow the control flow into \cfunction{PyList_SetItem()}. The list
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001218owns references to all its items, so when item 1 is replaced, it has
1219to dispose of the original item 1. Now let's suppose the original
1220item 1 was an instance of a user-defined class, and let's further
Fred Draked7bb3031998-03-03 17:52:07 +00001221suppose that the class defined a \method{__del__()} method. If this
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001222class instance has a reference count of 1, disposing of it will call
Fred Draked7bb3031998-03-03 17:52:07 +00001223its \method{__del__()} method.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001224
Fred Draked7bb3031998-03-03 17:52:07 +00001225Since it is written in Python, the \method{__del__()} method can execute
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001226arbitrary Python code. Could it perhaps do something to invalidate
Fred Draked7bb3031998-03-03 17:52:07 +00001227the reference to \code{item} in \cfunction{bug()}? You bet! Assuming
1228that the list passed into \cfunction{bug()} is accessible to the
1229\method{__del__()} method, it could execute a statement to the effect of
1230\samp{del list[0]}, and assuming this was the last reference to that
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001231object, it would free the memory associated with it, thereby
1232invalidating \code{item}.
1233
1234The solution, once you know the source of the problem, is easy:
1235temporarily increment the reference count. The correct version of the
1236function reads:
1237
Fred Drake1e11a5c1998-02-13 07:11:32 +00001238\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001239no_bug(PyObject *list) {
1240 PyObject *item = PyList_GetItem(list, 0);
Fred Drakea0dbddf1998-04-02 06:50:02 +00001241
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001242 Py_INCREF(item);
1243 PyList_SetItem(list, 1, PyInt_FromLong(0L));
1244 PyObject_Print(item, stdout, 0);
1245 Py_DECREF(item);
1246}
Fred Drake1e11a5c1998-02-13 07:11:32 +00001247\end{verbatim}
1248
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001249This is a true story. An older version of Python contained variants
Fred Drakeec9fbe91999-02-15 16:20:25 +00001250of this bug and someone spent a considerable amount of time in a C
Fred Draked7bb3031998-03-03 17:52:07 +00001251debugger to figure out why his \method{__del__()} methods would fail...
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001252
1253The second case of problems with a borrowed reference is a variant
1254involving threads. Normally, multiple threads in the Python
1255interpreter can't get in each other's way, because there is a global
1256lock protecting Python's entire object space. However, it is possible
1257to temporarily release this lock using the macro
1258\code{Py_BEGIN_ALLOW_THREADS}, and to re-acquire it using
1259\code{Py_END_ALLOW_THREADS}. This is common around blocking I/O
1260calls, to let other threads use the CPU while waiting for the I/O to
1261complete. Obviously, the following function has the same problem as
1262the previous one:
1263
Fred Drake1e11a5c1998-02-13 07:11:32 +00001264\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001265bug(PyObject *list) {
1266 PyObject *item = PyList_GetItem(list, 0);
1267 Py_BEGIN_ALLOW_THREADS
1268 ...some blocking I/O call...
1269 Py_END_ALLOW_THREADS
1270 PyObject_Print(item, stdout, 0); /* BUG! */
1271}
Fred Drake1e11a5c1998-02-13 07:11:32 +00001272\end{verbatim}
1273
Fred Drake8e015171999-02-17 18:12:14 +00001274
Fred Drake5e8aa541998-11-16 18:34:07 +00001275\subsection{NULL Pointers
1276 \label{nullPointers}}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001277
Fred Drakea0dbddf1998-04-02 06:50:02 +00001278In general, functions that take object references as arguments do not
Fred Drake0fd82681998-01-09 05:39:38 +00001279expect you to pass them \NULL{} pointers, and will dump core (or
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001280cause later core dumps) if you do so. Functions that return object
Fred Drake0fd82681998-01-09 05:39:38 +00001281references generally return \NULL{} only to indicate that an
1282exception occurred. The reason for not testing for \NULL{}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001283arguments is that functions often pass the objects they receive on to
Fred Drake0fd82681998-01-09 05:39:38 +00001284other function --- if each function were to test for \NULL{},
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001285there would be a lot of redundant tests and the code would run slower.
1286
Fred Drakee743fd01998-11-24 17:07:29 +00001287It is better to test for \NULL{} only at the ``source'', i.e.\ when a
1288pointer that may be \NULL{} is received, e.g.\ from
Fred Draked7bb3031998-03-03 17:52:07 +00001289\cfunction{malloc()} or from a function that may raise an exception.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001290
Fred Draked7bb3031998-03-03 17:52:07 +00001291The macros \cfunction{Py_INCREF()} and \cfunction{Py_DECREF()}
Fred Drakea0dbddf1998-04-02 06:50:02 +00001292do not check for \NULL{} pointers --- however, their variants
Fred Draked7bb3031998-03-03 17:52:07 +00001293\cfunction{Py_XINCREF()} and \cfunction{Py_XDECREF()} do.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001294
1295The macros for checking for a particular object type
Fred Drake0fd82681998-01-09 05:39:38 +00001296(\code{Py\var{type}_Check()}) don't check for \NULL{} pointers ---
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001297again, there is much code that calls several of these in a row to test
1298an object against various different expected types, and this would
Fred Drake0fd82681998-01-09 05:39:38 +00001299generate redundant tests. There are no variants with \NULL{}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001300checking.
1301
Fred Drakeec9fbe91999-02-15 16:20:25 +00001302The C function calling mechanism guarantees that the argument list
1303passed to C functions (\code{args} in the examples) is never
Fred Drake52e2d511999-04-05 21:26:37 +00001304\NULL{} --- in fact it guarantees that it is always a tuple.\footnote{
1305These guarantees don't hold when you use the ``old'' style
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001306calling convention --- this is still found in much existing code.}
1307
Fred Drake0fd82681998-01-09 05:39:38 +00001308It is a severe error to ever let a \NULL{} pointer ``escape'' to
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001309the Python user.
Guido van Rossumdb65a6c1993-11-05 17:11:16 +00001310
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001311
Fred Drake5e8aa541998-11-16 18:34:07 +00001312\section{Writing Extensions in \Cpp{}
1313 \label{cplusplus}}
Guido van Rossumdb65a6c1993-11-05 17:11:16 +00001314
Guido van Rossum16d6e711994-08-08 12:30:22 +00001315It is possible to write extension modules in \Cpp{}. Some restrictions
Guido van Rossumed39cd01995-10-08 00:17:19 +00001316apply. If the main program (the Python interpreter) is compiled and
Fred Drakeec9fbe91999-02-15 16:20:25 +00001317linked by the C compiler, global or static objects with constructors
Guido van Rossumed39cd01995-10-08 00:17:19 +00001318cannot be used. This is not a problem if the main program is linked
Guido van Rossumafcd5891998-02-05 19:59:39 +00001319by the \Cpp{} compiler. Functions that will be called by the
1320Python interpreter (in particular, module initalization functions)
1321have to be declared using \code{extern "C"}.
Guido van Rossumdb65a6c1993-11-05 17:11:16 +00001322It is unnecessary to enclose the Python header files in
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001323\code{extern "C" \{...\}} --- they use this form already if the symbol
Fred Drake0fd82681998-01-09 05:39:38 +00001324\samp{__cplusplus} is defined (all recent \Cpp{} compilers define this
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001325symbol).
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001326
Fred Drakee743fd01998-11-24 17:07:29 +00001327
Fred Drakeec9fbe91999-02-15 16:20:25 +00001328\section{Providing a C API for an Extension Module
1329 \label{using-cobjects}}
1330\sectionauthor{Konrad Hinsen}{hinsen@cnrs-orleans.fr}
Fred Drakee743fd01998-11-24 17:07:29 +00001331
Fred Drakeec9fbe91999-02-15 16:20:25 +00001332Many extension modules just provide new functions and types to be
1333used from Python, but sometimes the code in an extension module can
1334be useful for other extension modules. For example, an extension
1335module could implement a type ``collection'' which works like lists
1336without order. Just like the standard Python list type has a C API
1337which permits extension modules to create and manipulate lists, this
1338new collection type should have a set of C functions for direct
1339manipulation from other extension modules.
1340
1341At first sight this seems easy: just write the functions (without
1342declaring them \keyword{static}, of course), provide an appropriate
1343header file, and document the C API. And in fact this would work if
1344all extension modules were always linked statically with the Python
1345interpreter. When modules are used as shared libraries, however, the
1346symbols defined in one module may not be visible to another module.
1347The details of visibility depend on the operating system; some systems
1348use one global namespace for the Python interpreter and all extension
Fred Drake33698f81999-02-16 23:06:32 +00001349modules (e.g.\ Windows), whereas others require an explicit list of
1350imported symbols at module link time (e.g.\ AIX), or offer a choice of
Fred Drakeec9fbe91999-02-15 16:20:25 +00001351different strategies (most Unices). And even if symbols are globally
1352visible, the module whose functions one wishes to call might not have
1353been loaded yet!
1354
1355Portability therefore requires not to make any assumptions about
1356symbol visibility. This means that all symbols in extension modules
1357should be declared \keyword{static}, except for the module's
1358initialization function, in order to avoid name clashes with other
1359extension modules (as discussed in section~\ref{methodTable}). And it
1360means that symbols that \emph{should} be accessible from other
1361extension modules must be exported in a different way.
1362
1363Python provides a special mechanism to pass C-level information (i.e.
1364pointers) from one extension module to another one: CObjects.
1365A CObject is a Python data type which stores a pointer (\ctype{void
1366*}). CObjects can only be created and accessed via their C API, but
1367they can be passed around like any other Python object. In particular,
1368they can be assigned to a name in an extension module's namespace.
1369Other extension modules can then import this module, retrieve the
1370value of this name, and then retrieve the pointer from the CObject.
1371
1372There are many ways in which CObjects can be used to export the C API
1373of an extension module. Each name could get its own CObject, or all C
1374API pointers could be stored in an array whose address is published in
1375a CObject. And the various tasks of storing and retrieving the pointers
1376can be distributed in different ways between the module providing the
1377code and the client modules.
1378
1379The following example demonstrates an approach that puts most of the
1380burden on the writer of the exporting module, which is appropriate
1381for commonly used library modules. It stores all C API pointers
1382(just one in the example!) in an array of \ctype{void} pointers which
1383becomes the value of a CObject. The header file corresponding to
1384the module provides a macro that takes care of importing the module
1385and retrieving its C API pointers; client modules only have to call
1386this macro before accessing the C API.
1387
1388The exporting module is a modification of the \module{spam} module from
1389section~\ref{simpleExample}. The function \function{spam.system()}
1390does not call the C library function \cfunction{system()} directly,
1391but a function \cfunction{PySpam_System()}, which would of course do
1392something more complicated in reality (such as adding ``spam'' to
1393every command). This function \cfunction{PySpam_System()} is also
1394exported to other extension modules.
1395
1396The function \cfunction{PySpam_System()} is a plain C function,
1397declared \keyword{static} like everything else:
1398
1399\begin{verbatim}
1400static int
1401PySpam_System(command)
1402 char *command;
1403{
1404 return system(command);
1405}
1406\end{verbatim}
1407
1408The function \cfunction{spam_system()} is modified in a trivial way:
1409
1410\begin{verbatim}
1411static PyObject *
1412spam_system(self, args)
1413 PyObject *self;
1414 PyObject *args;
1415{
1416 char *command;
1417 int sts;
1418
1419 if (!PyArg_ParseTuple(args, "s", &command))
1420 return NULL;
1421 sts = PySpam_System(command);
1422 return Py_BuildValue("i", sts);
1423}
1424\end{verbatim}
1425
1426In the beginning of the module, right after the line
Fred Drake8e015171999-02-17 18:12:14 +00001427
Fred Drakeec9fbe91999-02-15 16:20:25 +00001428\begin{verbatim}
1429#include "Python.h"
1430\end{verbatim}
Fred Drake8e015171999-02-17 18:12:14 +00001431
Fred Drakeec9fbe91999-02-15 16:20:25 +00001432two more lines must be added:
Fred Drake8e015171999-02-17 18:12:14 +00001433
Fred Drakeec9fbe91999-02-15 16:20:25 +00001434\begin{verbatim}
1435#define SPAM_MODULE
1436#include "spammodule.h"
1437\end{verbatim}
1438
1439The \code{\#define} is used to tell the header file that it is being
1440included in the exporting module, not a client module. Finally,
1441the module's initialization function must take care of initializing
1442the C API pointer array:
Fred Drake8e015171999-02-17 18:12:14 +00001443
Fred Drakeec9fbe91999-02-15 16:20:25 +00001444\begin{verbatim}
1445void
1446initspam()
1447{
1448 PyObject *m, *d;
1449 static void *PySpam_API[PySpam_API_pointers];
1450 PyObject *c_api_object;
1451 m = Py_InitModule("spam", SpamMethods);
1452
1453 /* Initialize the C API pointer array */
1454 PySpam_API[PySpam_System_NUM] = (void *)PySpam_System;
1455
1456 /* Create a CObject containing the API pointer array's address */
1457 c_api_object = PyCObject_FromVoidPtr((void *)PySpam_API, NULL);
1458
1459 /* Create a name for this object in the module's namespace */
1460 d = PyModule_GetDict(m);
1461 PyDict_SetItemString(d, "_C_API", c_api_object);
1462}
1463\end{verbatim}
1464
1465Note that \code{PySpam_API} is declared \code{static}; otherwise
1466the pointer array would disappear when \code{initspam} terminates!
1467
1468The bulk of the work is in the header file \file{spammodule.h},
1469which looks like this:
1470
1471\begin{verbatim}
1472#ifndef Py_SPAMMODULE_H
1473#define Py_SPAMMODULE_H
1474#ifdef __cplusplus
1475extern "C" {
1476#endif
1477
1478/* Header file for spammodule */
1479
1480/* C API functions */
1481#define PySpam_System_NUM 0
1482#define PySpam_System_RETURN int
1483#define PySpam_System_PROTO Py_PROTO((char *command))
1484
1485/* Total number of C API pointers */
1486#define PySpam_API_pointers 1
1487
1488
1489#ifdef SPAM_MODULE
1490/* This section is used when compiling spammodule.c */
1491
1492static PySpam_System_RETURN PySpam_System PySpam_System_PROTO;
1493
1494#else
1495/* This section is used in modules that use spammodule's API */
1496
1497static void **PySpam_API;
1498
1499#define PySpam_System \
1500 (*(PySpam_System_RETURN (*)PySpam_System_PROTO) PySpam_API[PySpam_System_NUM])
1501
1502#define import_spam() \
1503{ \
1504 PyObject *module = PyImport_ImportModule("spam"); \
1505 if (module != NULL) { \
1506 PyObject *module_dict = PyModule_GetDict(module); \
1507 PyObject *c_api_object = PyDict_GetItemString(module_dict, "_C_API"); \
1508 if (PyCObject_Check(c_api_object)) { \
1509 PySpam_API = (void **)PyCObject_AsVoidPtr(c_api_object); \
1510 } \
1511 } \
1512}
1513
1514#endif
1515
1516#ifdef __cplusplus
1517}
1518#endif
1519
1520#endif /* !defined(Py_SPAMMODULE_H */
1521\end{verbatim}
1522
1523All that a client module must do in order to have access to the
1524function \cfunction{PySpam_System()} is to call the function (or
1525rather macro) \cfunction{import_spam()} in its initialization
1526function:
1527
1528\begin{verbatim}
1529void
1530initclient()
1531{
1532 PyObject *m;
1533
1534 Py_InitModule("client", ClientMethods);
1535 import_spam();
1536}
1537\end{verbatim}
1538
1539The main disadvantage of this approach is that the file
1540\file{spammodule.h} is rather complicated. However, the
1541basic structure is the same for each function that is
1542exported, so it has to be learned only once.
1543
1544Finally it should be mentioned that CObjects offer additional
1545functionality, which is especially useful for memory allocation and
1546deallocation of the pointer stored in a CObject. The details
1547are described in the \emph{Python/C API Reference Manual} in the
1548section ``CObjects'' and in the implementation of CObjects (files
1549\file{Include/cobject.h} and \file{Objects/cobject.c} in the
1550Python source code distribution).
1551
1552
1553\chapter{Building C and \Cpp{} Extensions on \UNIX{}
Fred Drake3de61bc1999-02-16 21:14:16 +00001554 \label{building-on-unix}}
Fred Drakee743fd01998-11-24 17:07:29 +00001555
Fred Drake33698f81999-02-16 23:06:32 +00001556\sectionauthor{Jim Fulton}{jim@Digicool.com}
Fred Drakee743fd01998-11-24 17:07:29 +00001557
1558
1559%The make file make file, building C extensions on Unix
1560
1561
1562Starting in Python 1.4, Python provides a special make file for
1563building make files for building dynamically-linked extensions and
1564custom interpreters. The make file make file builds a make file
1565that reflects various system variables determined by configure when
1566the Python interpreter was built, so people building module's don't
1567have to resupply these settings. This vastly simplifies the process
1568of building extensions and custom interpreters on Unix systems.
1569
1570The make file make file is distributed as the file
1571\file{Misc/Makefile.pre.in} in the Python source distribution. The
1572first step in building extensions or custom interpreters is to copy
1573this make file to a development directory containing extension module
1574source.
1575
1576The make file make file, \file{Makefile.pre.in} uses metadata
1577provided in a file named \file{Setup}. The format of the \file{Setup}
1578file is the same as the \file{Setup} (or \file{Setup.in}) file
1579provided in the \file{Modules/} directory of the Python source
Fred Drake33698f81999-02-16 23:06:32 +00001580distribution. The \file{Setup} file contains variable definitions:
Fred Drakee743fd01998-11-24 17:07:29 +00001581
1582\begin{verbatim}
1583EC=/projects/ExtensionClass
1584\end{verbatim}
1585
1586and module description lines. It can also contain blank lines and
1587comment lines that start with \character{\#}.
1588
1589A module description line includes a module name, source files,
1590options, variable references, and other input files, such
1591as libraries or object files. Consider a simple example::
1592
1593\begin{verbatim}
1594ExtensionClass ExtensionClass.c
1595\end{verbatim}
1596
1597This is the simplest form of a module definition line. It defines a
Fred Drake8e015171999-02-17 18:12:14 +00001598module, \module{ExtensionClass}, which has a single source file,
Fred Drakee743fd01998-11-24 17:07:29 +00001599\file{ExtensionClass.c}.
1600
Fred Drake8e015171999-02-17 18:12:14 +00001601This slightly more complex example uses an \strong{-I} option to
1602specify an include directory:
Fred Drakee743fd01998-11-24 17:07:29 +00001603
1604\begin{verbatim}
Fred Drake8e015171999-02-17 18:12:14 +00001605EC=/projects/ExtensionClass
Fred Drakee743fd01998-11-24 17:07:29 +00001606cPersistence cPersistence.c -I$(EC)
Fred Drake8e015171999-02-17 18:12:14 +00001607\end{verbatim} % $ <-- bow to font lock
Fred Drakee743fd01998-11-24 17:07:29 +00001608
1609This example also illustrates the format for variable references.
1610
1611For systems that support dynamic linking, the \file{Setup} file should
1612begin:
1613
1614\begin{verbatim}
1615*shared*
1616\end{verbatim}
1617
1618to indicate that the modules defined in \file{Setup} are to be built
Fred Drakedc12ec81999-03-09 18:36:55 +00001619as dynamically linked modules. A line containing only \samp{*static*}
1620can be used to indicate the subsequently listed modules should be
1621statically linked.
Fred Drakee743fd01998-11-24 17:07:29 +00001622
1623Here is a complete \file{Setup} file for building a
1624\module{cPersistent} module:
1625
1626\begin{verbatim}
1627# Set-up file to build the cPersistence module.
1628# Note that the text should begin in the first column.
1629*shared*
1630
1631# We need the path to the directory containing the ExtensionClass
1632# include file.
1633EC=/projects/ExtensionClass
1634cPersistence cPersistence.c -I$(EC)
Fred Drake8e015171999-02-17 18:12:14 +00001635\end{verbatim} % $ <-- bow to font lock
Fred Drakee743fd01998-11-24 17:07:29 +00001636
1637After the \file{Setup} file has been created, \file{Makefile.pre.in}
1638is run with the \samp{boot} target to create a make file:
1639
1640\begin{verbatim}
1641make -f Makefile.pre.in boot
1642\end{verbatim}
1643
1644This creates the file, Makefile. To build the extensions, simply
1645run the created make file:
1646
1647\begin{verbatim}
1648make
1649\end{verbatim}
1650
1651It's not necessary to re-run \file{Makefile.pre.in} if the
1652\file{Setup} file is changed. The make file automatically rebuilds
1653itself if the \file{Setup} file changes.
1654
Fred Drake8e015171999-02-17 18:12:14 +00001655
1656\section{Building Custom Interpreters \label{custom-interps}}
Fred Drakee743fd01998-11-24 17:07:29 +00001657
1658The make file built by \file{Makefile.pre.in} can be run with the
1659\samp{static} target to build an interpreter:
1660
1661\begin{verbatim}
1662make static
1663\end{verbatim}
1664
1665Any modules defined in the Setup file before the \samp{*shared*} line
1666will be statically linked into the interpreter. Typically, a
1667\samp{*shared*} line is omitted from the Setup file when a custom
1668interpreter is desired.
1669
Fred Drake8e015171999-02-17 18:12:14 +00001670
1671\section{Module Definition Options \label{module-defn-options}}
Fred Drakee743fd01998-11-24 17:07:29 +00001672
1673Several compiler options are supported:
1674
1675\begin{tableii}{l|l}{}{Option}{Meaning}
1676 \lineii{-C}{Tell the C pre-processor not to discard comments}
1677 \lineii{-D\var{name}=\var{value}}{Define a macro}
1678 \lineii{-I\var{dir}}{Specify an include directory, \var{dir}}
Fred Drake33698f81999-02-16 23:06:32 +00001679 \lineii{-L\var{dir}}{Specify a link-time library directory, \var{dir}}
1680 \lineii{-R\var{dir}}{Specify a run-time library directory, \var{dir}}
Fred Drakee743fd01998-11-24 17:07:29 +00001681 \lineii{-l\var{lib}}{Link a library, \var{lib}}
1682 \lineii{-U\var{name}}{Undefine a macro}
1683\end{tableii}
1684
1685Other compiler options can be included (snuck in) by putting them
Fred Drakedc12ec81999-03-09 18:36:55 +00001686in variables.
Fred Drakee743fd01998-11-24 17:07:29 +00001687
1688Source files can include files with \file{.c}, \file{.C}, \file{.cc},
Fred Drake8e015171999-02-17 18:12:14 +00001689\file{.cpp}, \file{.cxx}, and \file{.c++} extensions.
Fred Drakee743fd01998-11-24 17:07:29 +00001690
Fred Drake8e015171999-02-17 18:12:14 +00001691Other input files include files with \file{.a}, \file{.o}, \file{.sl},
1692and \file{.so} extensions.
Fred Drakee743fd01998-11-24 17:07:29 +00001693
1694
Fred Drake8e015171999-02-17 18:12:14 +00001695\section{Example \label{module-defn-example}}
Fred Drakee743fd01998-11-24 17:07:29 +00001696
1697Here is a more complicated example from \file{Modules/Setup.in}:
1698
1699\begin{verbatim}
1700GMP=/ufs/guido/src/gmp
1701mpz mpzmodule.c -I$(GMP) $(GMP)/libgmp.a
1702\end{verbatim}
1703
1704which could also be written as:
1705
1706\begin{verbatim}
1707mpz mpzmodule.c -I$(GMP) -L$(GMP) -lgmp
1708\end{verbatim}
1709
1710
1711\section{Distributing your extension modules
1712 \label{distributing}}
1713
1714When distributing your extension modules in source form, make sure to
1715include a \file{Setup} file. The \file{Setup} file should be named
1716\file{Setup.in} in the distribution. The make file make file,
1717\file{Makefile.pre.in}, will copy \file{Setup.in} to \file{Setup}.
1718Distributing a \file{Setup.in} file makes it easy for people to
1719customize the \file{Setup} file while keeping the original in
1720\file{Setup.in}.
1721
1722It is a good idea to include a copy of \file{Makefile.pre.in} for
1723people who do not have a source distribution of Python.
1724
1725Do not distribute a make file. People building your modules
Fred Drake8e015171999-02-17 18:12:14 +00001726should use \file{Makefile.pre.in} to build their own make file. A
1727\file{README} file included in the package should provide simple
1728instructions to perform the build.
Fred Drakee743fd01998-11-24 17:07:29 +00001729
Fred Drake33698f81999-02-16 23:06:32 +00001730Work is being done to make building and installing Python extensions
1731easier for all platforms; this work in likely to supplant the current
1732approach at some point in the future. For more information or to
1733participate in the effort, refer to
1734\url{http://www.python.org/sigs/distutils-sig/} on the Python Web
1735site.
1736
Fred Drakee743fd01998-11-24 17:07:29 +00001737
Fred Drake3de61bc1999-02-16 21:14:16 +00001738\chapter{Building C and \Cpp{} Extensions on Windows
Fred Drake33698f81999-02-16 23:06:32 +00001739 \label{building-on-windows}}
Fred Drake3de61bc1999-02-16 21:14:16 +00001740
1741
1742This chapter briefly explains how to create a Windows extension module
Fred Drake33698f81999-02-16 23:06:32 +00001743for Python using Microsoft Visual \Cpp{}, and follows with more
1744detailed background information on how it works. The explanatory
1745material is useful for both the Windows programmer learning to build
1746Python extensions and the \UNIX{} programming interested in producing
1747software which can be successfully built on both \UNIX{} and Windows.
1748
Fred Drake8e015171999-02-17 18:12:14 +00001749
Fred Drake33698f81999-02-16 23:06:32 +00001750\section{A Cookbook Approach \label{win-cookbook}}
1751
1752\sectionauthor{Neil Schemenauer}{neil_schemenauer@transcanada.com}
1753
1754This section provides a recipe for building a Python extension on
1755Windows.
Fred Drake3de61bc1999-02-16 21:14:16 +00001756
1757Grab the binary installer from \url{http://www.python.org/} and
1758install Python. The binary installer has all of the required header
1759files except for \file{config.h}.
1760
1761Get the source distribution and extract it into a convenient location.
1762Copy the \file{config.h} from the \file{PC/} directory into the
1763\file{include/} directory created by the installer.
1764
1765Create a \file{Setup} file for your extension module, as described in
1766Chapter \ref{building-on-unix}.
1767
1768Get David Ascher's \file{compile.py} script from
Fred Drakec0fcbc11999-04-29 02:30:04 +00001769\url{http://starship.python.net/crew/da/compile/}. Run the script to
Fred Drake3de61bc1999-02-16 21:14:16 +00001770create Microsoft Visual \Cpp{} project files.
1771
1772Open the DSW file in V\Cpp{} and select \strong{Build}.
1773
1774If your module creates a new type, you may have trouble with this line:
1775
1776\begin{verbatim}
1777 PyObject_HEAD_INIT(&PyType_Type)
1778\end{verbatim}
1779
1780Change it to:
1781
1782\begin{verbatim}
1783 PyObject_HEAD_INIT(NULL)
1784\end{verbatim}
1785
1786and add the following to the module initialization function:
1787
1788\begin{verbatim}
1789 MyObject_Type.ob_type = &PyType_Type;
1790\end{verbatim}
1791
1792Refer to section 3 of the Python FAQ
1793(\url{http://www.python.org/doc/FAQ.html}) for details on why you must
1794do this.
1795
1796
Fred Drake33698f81999-02-16 23:06:32 +00001797\section{Differences Between \UNIX{} and Windows
1798 \label{dynamic-linking}}
1799\sectionauthor{Chris Phoenix}{cphoenix@best.com}
1800
1801
1802\UNIX{} and Windows use completely different paradigms for run-time
1803loading of code. Before you try to build a module that can be
1804dynamically loaded, be aware of how your system works.
1805
1806In \UNIX{}, a shared object (.so) file contains code to be used by the
1807program, and also the names of functions and data that it expects to
1808find in the program. When the file is joined to the program, all
1809references to those functions and data in the file's code are changed
1810to point to the actual locations in the program where the functions
1811and data are placed in memory. This is basically a link operation.
1812
1813In Windows, a dynamic-link library (\file{.dll}) file has no dangling
1814references. Instead, an access to functions or data goes through a
1815lookup table. So the DLL code does not have to be fixed up at runtime
1816to refer to the program's memory; instead, the code already uses the
1817DLL's lookup table, and the lookup table is modified at runtime to
1818point to the functions and data.
1819
1820In \UNIX{}, there is only one type of library file (\file{.a}) which
1821contains code from several object files (\file{.o}). During the link
1822step to create a shared object file (\file{.so}), the linker may find
1823that it doesn't know where an identifier is defined. The linker will
1824look for it in the object files in the libraries; if it finds it, it
1825will include all the code from that object file.
1826
1827In Windows, there are two types of library, a static library and an
1828import library (both called \file{.lib}). A static library is like a
1829\UNIX{} \file{.a} file; it contains code to be included as necessary.
1830An import library is basically used only to reassure the linker that a
1831certain identifier is legal, and will be present in the program when
1832the DLL is loaded. So the linker uses the information from the
1833import library to build the lookup table for using identifiers that
1834are not included in the DLL. When an application or a DLL is linked,
1835an import library may be generated, which will need to be used for all
1836future DLLs that depend on the symbols in the application or DLL.
1837
1838Suppose you are building two dynamic-load modules, B and C, which should
1839share another block of code A. On \UNIX{}, you would \emph{not} pass
1840\file{A.a} to the linker for \file{B.so} and \file{C.so}; that would
1841cause it to be included twice, so that B and C would each have their
1842own copy. In Windows, building \file{A.dll} will also build
1843\file{A.lib}. You \emph{do} pass \file{A.lib} to the linker for B and
1844C. \file{A.lib} does not contain code; it just contains information
1845which will be used at runtime to access A's code.
1846
1847In Windows, using an import library is sort of like using \samp{import
1848spam}; it gives you access to spam's names, but does not create a
1849separate copy. On \UNIX{}, linking with a library is more like
1850\samp{from spam import *}; it does create a separate copy.
1851
1852
1853\section{Using DLLs in Practice \label{win-dlls}}
1854\sectionauthor{Chris Phoenix}{cphoenix@best.com}
1855
1856Windows Python is built in Microsoft Visual \Cpp{}; using other
1857compilers may or may not work (though Borland seems to). The rest of
1858this section is MSV\Cpp{} specific.
1859
1860When creating DLLs in Windows, you must pass \file{python15.lib} to
1861the linker. To build two DLLs, spam and ni (which uses C functions
1862found in spam), you could use these commands:
1863
1864\begin{verbatim}
1865cl /LD /I/python/include spam.c ../libs/python15.lib
1866cl /LD /I/python/include ni.c spam.lib ../libs/python15.lib
1867\end{verbatim}
1868
1869The first command created three files: \file{spam.obj},
1870\file{spam.dll} and \file{spam.lib}. \file{Spam.dll} does not contain
1871any Python functions (such as \cfunction{PyArg_ParseTuple()}), but it
1872does know how to find the Python code thanks to \file{python15.lib}.
1873
1874The second command created \file{ni.dll} (and \file{.obj} and
1875\file{.lib}), which knows how to find the necessary functions from
1876spam, and also from the Python executable.
1877
1878Not every identifier is exported to the lookup table. If you want any
1879other modules (including Python) to be able to see your identifiers,
1880you have to say \samp{_declspec(dllexport)}, as in \samp{void
1881_declspec(dllexport) initspam(void)} or \samp{PyObject
1882_declspec(dllexport) *NiGetSpamData(void)}.
1883
1884Developer Studio will throw in a lot of import libraries that you do
1885not really need, adding about 100K to your executable. To get rid of
1886them, use the Project Settings dialog, Link tab, to specify
1887\emph{ignore default libraries}. Add the correct
1888\file{msvcrt\var{xx}.lib} to the list of libraries.
1889
1890
Fred Drake5e8aa541998-11-16 18:34:07 +00001891\chapter{Embedding Python in Another Application
1892 \label{embedding}}
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001893
1894Embedding Python is similar to extending it, but not quite. The
1895difference is that when you extend Python, the main program of the
Guido van Rossum16d6e711994-08-08 12:30:22 +00001896application is still the Python interpreter, while if you embed
Guido van Rossumdb65a6c1993-11-05 17:11:16 +00001897Python, the main program may have nothing to do with Python ---
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001898instead, some parts of the application occasionally call the Python
1899interpreter to run some Python code.
1900
1901So if you are embedding Python, you are providing your own main
1902program. One of the things this main program has to do is initialize
1903the Python interpreter. At the very least, you have to call the
Fred Draked7bb3031998-03-03 17:52:07 +00001904function \cfunction{Py_Initialize()}. There are optional calls to
1905pass command line arguments to Python. Then later you can call the
1906interpreter from any part of the application.
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001907
1908There are several different ways to call the interpreter: you can pass
Fred Draked7bb3031998-03-03 17:52:07 +00001909a string containing Python statements to
1910\cfunction{PyRun_SimpleString()}, or you can pass a stdio file pointer
1911and a file name (for identification in error messages only) to
1912\cfunction{PyRun_SimpleFile()}. You can also call the lower-level
1913operations described in the previous chapters to construct and use
1914Python objects.
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001915
1916A simple demo of embedding Python can be found in the directory
Fred Drake295fb431999-02-16 17:29:42 +00001917\file{Demo/embed/} of the source distribution.
Guido van Rossumdb65a6c1993-11-05 17:11:16 +00001918
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001919
Fred Drake5e8aa541998-11-16 18:34:07 +00001920\section{Embedding Python in \Cpp{}
1921 \label{embeddingInCplusplus}}
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001922
Guido van Rossum16d6e711994-08-08 12:30:22 +00001923It is also possible to embed Python in a \Cpp{} program; precisely how this
1924is done will depend on the details of the \Cpp{} system used; in general you
1925will need to write the main program in \Cpp{}, and use the \Cpp{} compiler
1926to compile and link your program. There is no need to recompile Python
1927itself using \Cpp{}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001928
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001929\end{document}