blob: 357ca0a84549d1fecd05bdd0129c37f40b65dec5 [file] [log] [blame]
Fred Drake3adf79e2001-10-12 19:01:43 +00001\chapter{Utilities \label{utilities}}
2
3The functions in this chapter perform various utility tasks, ranging
4from helping C code be more portable across platforms, using Python
5modules from C, and parsing function arguments and constructing Python
6values from C values.
7
8
9\section{Operating System Utilities \label{os}}
10
11\begin{cfuncdesc}{int}{Py_FdIsInteractive}{FILE *fp, char *filename}
12 Return true (nonzero) if the standard I/O file \var{fp} with name
13 \var{filename} is deemed interactive. This is the case for files
14 for which \samp{isatty(fileno(\var{fp}))} is true. If the global
15 flag \cdata{Py_InteractiveFlag} is true, this function also returns
16 true if the \var{filename} pointer is \NULL{} or if the name is
17 equal to one of the strings \code{'<stdin>'} or \code{'???'}.
18\end{cfuncdesc}
19
20\begin{cfuncdesc}{long}{PyOS_GetLastModificationTime}{char *filename}
21 Return the time of last modification of the file \var{filename}.
22 The result is encoded in the same way as the timestamp returned by
23 the standard C library function \cfunction{time()}.
24\end{cfuncdesc}
25
26\begin{cfuncdesc}{void}{PyOS_AfterFork}{}
27 Function to update some internal state after a process fork; this
28 should be called in the new process if the Python interpreter will
29 continue to be used. If a new executable is loaded into the new
30 process, this function does not need to be called.
31\end{cfuncdesc}
32
33\begin{cfuncdesc}{int}{PyOS_CheckStack}{}
34 Return true when the interpreter runs out of stack space. This is a
35 reliable check, but is only available when \constant{USE_STACKCHECK}
36 is defined (currently on Windows using the Microsoft Visual \Cpp{}
37 compiler and on the Macintosh). \constant{USE_CHECKSTACK} will be
38 defined automatically; you should never change the definition in
39 your own code.
40\end{cfuncdesc}
41
42\begin{cfuncdesc}{PyOS_sighandler_t}{PyOS_getsig}{int i}
43 Return the current signal handler for signal \var{i}. This is a
44 thin wrapper around either \cfunction{sigaction()} or
45 \cfunction{signal()}. Do not call those functions directly!
46 \ctype{PyOS_sighandler_t} is a typedef alias for \ctype{void
47 (*)(int)}.
48\end{cfuncdesc}
49
50\begin{cfuncdesc}{PyOS_sighandler_t}{PyOS_setsig}{int i, PyOS_sighandler_t h}
51 Set the signal handler for signal \var{i} to be \var{h}; return the
52 old signal handler. This is a thin wrapper around either
53 \cfunction{sigaction()} or \cfunction{signal()}. Do not call those
54 functions directly! \ctype{PyOS_sighandler_t} is a typedef alias
55 for \ctype{void (*)(int)}.
56\end{cfuncdesc}
57
58
59\section{Process Control \label{processControl}}
60
Tim Peters7c321a82002-07-09 02:57:01 +000061\begin{cfuncdesc}{void}{Py_FatalError}{const char *message}
Fred Drake3adf79e2001-10-12 19:01:43 +000062 Print a fatal error message and kill the process. No cleanup is
63 performed. This function should only be invoked when a condition is
64 detected that would make it dangerous to continue using the Python
65 interpreter; e.g., when the object administration appears to be
66 corrupted. On \UNIX, the standard C library function
67 \cfunction{abort()}\ttindex{abort()} is called which will attempt to
68 produce a \file{core} file.
69\end{cfuncdesc}
70
71\begin{cfuncdesc}{void}{Py_Exit}{int status}
72 Exit the current process. This calls
73 \cfunction{Py_Finalize()}\ttindex{Py_Finalize()} and then calls the
74 standard C library function
75 \code{exit(\var{status})}\ttindex{exit()}.
76\end{cfuncdesc}
77
78\begin{cfuncdesc}{int}{Py_AtExit}{void (*func) ()}
79 Register a cleanup function to be called by
80 \cfunction{Py_Finalize()}\ttindex{Py_Finalize()}. The cleanup
81 function will be called with no arguments and should return no
82 value. At most 32 \index{cleanup functions}cleanup functions can be
83 registered. When the registration is successful,
84 \cfunction{Py_AtExit()} returns \code{0}; on failure, it returns
85 \code{-1}. The cleanup function registered last is called first.
86 Each cleanup function will be called at most once. Since Python's
87 internal finallization will have completed before the cleanup
88 function, no Python APIs should be called by \var{func}.
89\end{cfuncdesc}
90
91
92\section{Importing Modules \label{importing}}
93
94\begin{cfuncdesc}{PyObject*}{PyImport_ImportModule}{char *name}
95 This is a simplified interface to
96 \cfunction{PyImport_ImportModuleEx()} below, leaving the
97 \var{globals} and \var{locals} arguments set to \NULL. When the
98 \var{name} argument contains a dot (when it specifies a submodule of
99 a package), the \var{fromlist} argument is set to the list
100 \code{['*']} so that the return value is the named module rather
101 than the top-level package containing it as would otherwise be the
102 case. (Unfortunately, this has an additional side effect when
103 \var{name} in fact specifies a subpackage instead of a submodule:
104 the submodules specified in the package's \code{__all__} variable
105 are \index{package variable!\code{__all__}}
106 \withsubitem{(package variable)}{\ttindex{__all__}}loaded.) Return
107 a new reference to the imported module, or \NULL{} with an exception
108 set on failure (the module may still be created in this case ---
109 examine \code{sys.modules} to find out).
110 \withsubitem{(in module sys)}{\ttindex{modules}}
111\end{cfuncdesc}
112
113\begin{cfuncdesc}{PyObject*}{PyImport_ImportModuleEx}{char *name,
114 PyObject *globals, PyObject *locals, PyObject *fromlist}
115 Import a module. This is best described by referring to the
116 built-in Python function
117 \function{__import__()}\bifuncindex{__import__}, as the standard
118 \function{__import__()} function calls this function directly.
119
120 The return value is a new reference to the imported module or
121 top-level package, or \NULL{} with an exception set on failure (the
122 module may still be created in this case). Like for
123 \function{__import__()}, the return value when a submodule of a
124 package was requested is normally the top-level package, unless a
125 non-empty \var{fromlist} was given.
126\end{cfuncdesc}
127
128\begin{cfuncdesc}{PyObject*}{PyImport_Import}{PyObject *name}
129 This is a higher-level interface that calls the current ``import
130 hook function''. It invokes the \function{__import__()} function
131 from the \code{__builtins__} of the current globals. This means
132 that the import is done using whatever import hooks are installed in
133 the current environment, e.g. by \module{rexec}\refstmodindex{rexec}
134 or \module{ihooks}\refstmodindex{ihooks}.
135\end{cfuncdesc}
136
137\begin{cfuncdesc}{PyObject*}{PyImport_ReloadModule}{PyObject *m}
138 Reload a module. This is best described by referring to the
139 built-in Python function \function{reload()}\bifuncindex{reload}, as
140 the standard \function{reload()} function calls this function
141 directly. Return a new reference to the reloaded module, or \NULL{}
142 with an exception set on failure (the module still exists in this
143 case).
144\end{cfuncdesc}
145
146\begin{cfuncdesc}{PyObject*}{PyImport_AddModule}{char *name}
147 Return the module object corresponding to a module name. The
148 \var{name} argument may be of the form \code{package.module}).
149 First check the modules dictionary if there's one there, and if not,
150 create a new one and insert in in the modules dictionary.
Fred Drake674dae22002-11-13 15:13:38 +0000151 Return \NULL{} with an exception set on failure.
Fred Drake3adf79e2001-10-12 19:01:43 +0000152 \note{This function does not load or import the module; if the
153 module wasn't already loaded, you will get an empty module object.
154 Use \cfunction{PyImport_ImportModule()} or one of its variants to
Fred Drake674dae22002-11-13 15:13:38 +0000155 import a module. Package structures implied by a dotted name for
156 \var{name} are not created if not already present.}
Fred Drake3adf79e2001-10-12 19:01:43 +0000157\end{cfuncdesc}
158
159\begin{cfuncdesc}{PyObject*}{PyImport_ExecCodeModule}{char *name, PyObject *co}
160 Given a module name (possibly of the form \code{package.module}) and
161 a code object read from a Python bytecode file or obtained from the
162 built-in function \function{compile()}\bifuncindex{compile}, load
163 the module. Return a new reference to the module object, or \NULL{}
164 with an exception set if an error occurred (the module may still be
Fred Drake674dae22002-11-13 15:13:38 +0000165 created in this case). This function would reload the module if it
166 was already imported. If \var{name} points to a dotted name of the
167 form \code{package.module}, any package structures not already
168 created will still not be created.
Fred Drake3adf79e2001-10-12 19:01:43 +0000169\end{cfuncdesc}
170
171\begin{cfuncdesc}{long}{PyImport_GetMagicNumber}{}
172 Return the magic number for Python bytecode files
173 (a.k.a. \file{.pyc} and \file{.pyo} files). The magic number should
174 be present in the first four bytes of the bytecode file, in
175 little-endian byte order.
176\end{cfuncdesc}
177
178\begin{cfuncdesc}{PyObject*}{PyImport_GetModuleDict}{}
179 Return the dictionary used for the module administration
180 (a.k.a.\ \code{sys.modules}). Note that this is a per-interpreter
181 variable.
182\end{cfuncdesc}
183
184\begin{cfuncdesc}{void}{_PyImport_Init}{}
185 Initialize the import mechanism. For internal use only.
186\end{cfuncdesc}
187
188\begin{cfuncdesc}{void}{PyImport_Cleanup}{}
189 Empty the module table. For internal use only.
190\end{cfuncdesc}
191
192\begin{cfuncdesc}{void}{_PyImport_Fini}{}
193 Finalize the import mechanism. For internal use only.
194\end{cfuncdesc}
195
196\begin{cfuncdesc}{PyObject*}{_PyImport_FindExtension}{char *, char *}
197 For internal use only.
198\end{cfuncdesc}
199
200\begin{cfuncdesc}{PyObject*}{_PyImport_FixupExtension}{char *, char *}
201 For internal use only.
202\end{cfuncdesc}
203
204\begin{cfuncdesc}{int}{PyImport_ImportFrozenModule}{char *name}
205 Load a frozen module named \var{name}. Return \code{1} for success,
206 \code{0} if the module is not found, and \code{-1} with an exception
207 set if the initialization failed. To access the imported module on
208 a successful load, use \cfunction{PyImport_ImportModule()}. (Note
209 the misnomer --- this function would reload the module if it was
210 already imported.)
211\end{cfuncdesc}
212
213\begin{ctypedesc}[_frozen]{struct _frozen}
214 This is the structure type definition for frozen module descriptors,
215 as generated by the \program{freeze}\index{freeze utility} utility
216 (see \file{Tools/freeze/} in the Python source distribution). Its
217 definition, found in \file{Include/import.h}, is:
218
219\begin{verbatim}
220struct _frozen {
221 char *name;
222 unsigned char *code;
223 int size;
224};
225\end{verbatim}
226\end{ctypedesc}
227
228\begin{cvardesc}{struct _frozen*}{PyImport_FrozenModules}
229 This pointer is initialized to point to an array of \ctype{struct
230 _frozen} records, terminated by one whose members are all \NULL{} or
231 zero. When a frozen module is imported, it is searched in this
232 table. Third-party code could play tricks with this to provide a
233 dynamically created collection of frozen modules.
234\end{cvardesc}
235
236\begin{cfuncdesc}{int}{PyImport_AppendInittab}{char *name,
237 void (*initfunc)(void)}
238 Add a single module to the existing table of built-in modules. This
239 is a convenience wrapper around
240 \cfunction{PyImport_ExtendInittab()}, returning \code{-1} if the
241 table could not be extended. The new module can be imported by the
242 name \var{name}, and uses the function \var{initfunc} as the
243 initialization function called on the first attempted import. This
244 should be called before \cfunction{Py_Initialize()}.
245\end{cfuncdesc}
246
247\begin{ctypedesc}[_inittab]{struct _inittab}
248 Structure describing a single entry in the list of built-in
249 modules. Each of these structures gives the name and initialization
250 function for a module built into the interpreter. Programs which
251 embed Python may use an array of these structures in conjunction
252 with \cfunction{PyImport_ExtendInittab()} to provide additional
253 built-in modules. The structure is defined in
254 \file{Include/import.h} as:
255
256\begin{verbatim}
257struct _inittab {
258 char *name;
259 void (*initfunc)(void);
260};
261\end{verbatim}
262\end{ctypedesc}
263
264\begin{cfuncdesc}{int}{PyImport_ExtendInittab}{struct _inittab *newtab}
265 Add a collection of modules to the table of built-in modules. The
266 \var{newtab} array must end with a sentinel entry which contains
267 \NULL{} for the \member{name} field; failure to provide the sentinel
268 value can result in a memory fault. Returns \code{0} on success or
269 \code{-1} if insufficient memory could be allocated to extend the
270 internal table. In the event of failure, no modules are added to
271 the internal table. This should be called before
272 \cfunction{Py_Initialize()}.
273\end{cfuncdesc}
274
275
Fred Drake0fae49f2001-10-14 04:45:51 +0000276\section{Data marshalling support \label{marshalling-utils}}
277
278These routines allow C code to work with serialized objects using the
279same data format as the \module{marshal} module. There are functions
280to write data into the serialization format, and additional functions
281that can be used to read the data back. Files used to store marshalled
282data must be opened in binary mode.
283
284Numeric values are stored with the least significant byte first.
285
286\begin{cfuncdesc}{void}{PyMarshal_WriteLongToFile}{long value, FILE *file}
287 Marshal a \ctype{long} integer, \var{value}, to \var{file}. This
288 will only write the least-significant 32 bits of \var{value};
289 regardless of the size of the native \ctype{long} type.
290\end{cfuncdesc}
291
292\begin{cfuncdesc}{void}{PyMarshal_WriteShortToFile}{short value, FILE *file}
Fred Drakeb0840172002-06-17 15:44:18 +0000293 Marshal a \ctype{short} integer, \var{value}, to \var{file}. This
294 will only write the least-significant 16 bits of \var{value};
295 regardless of the size of the native \ctype{short} type.
Fred Drake0fae49f2001-10-14 04:45:51 +0000296\end{cfuncdesc}
297
298\begin{cfuncdesc}{void}{PyMarshal_WriteObjectToFile}{PyObject *value,
299 FILE *file}
Fred Drakeb0840172002-06-17 15:44:18 +0000300 Marshal a Python object, \var{value}, to \var{file}.
Fred Drake0fae49f2001-10-14 04:45:51 +0000301\end{cfuncdesc}
302
303\begin{cfuncdesc}{PyObject*}{PyMarshal_WriteObjectToString}{PyObject *value}
304 Return a string object containing the marshalled representation of
305 \var{value}.
306\end{cfuncdesc}
307
308The following functions allow marshalled values to be read back in.
309
310XXX What about error detection? It appears that reading past the end
311of the file will always result in a negative numeric value (where
312that's relevant), but it's not clear that negative values won't be
313handled properly when there's no error. What's the right way to tell?
314Should only non-negative values be written using these routines?
315
316\begin{cfuncdesc}{long}{PyMarshal_ReadLongFromFile}{FILE *file}
317 Return a C \ctype{long} from the data stream in a \ctype{FILE*}
318 opened for reading. Only a 32-bit value can be read in using
319 this function, regardless of the native size of \ctype{long}.
320\end{cfuncdesc}
321
322\begin{cfuncdesc}{int}{PyMarshal_ReadShortFromFile}{FILE *file}
323 Return a C \ctype{short} from the data stream in a \ctype{FILE*}
324 opened for reading. Only a 16-bit value can be read in using
Fred Drakeb0840172002-06-17 15:44:18 +0000325 this function, regardless of the native size of \ctype{short}.
Fred Drake0fae49f2001-10-14 04:45:51 +0000326\end{cfuncdesc}
327
328\begin{cfuncdesc}{PyObject*}{PyMarshal_ReadObjectFromFile}{FILE *file}
329 Return a Python object from the data stream in a \ctype{FILE*}
330 opened for reading. On error, sets the appropriate exception
331 (\exception{EOFError} or \exception{TypeError}) and returns \NULL.
332\end{cfuncdesc}
333
334\begin{cfuncdesc}{PyObject*}{PyMarshal_ReadLastObjectFromFile}{FILE *file}
335 Return a Python object from the data stream in a \ctype{FILE*}
336 opened for reading. Unlike
337 \cfunction{PyMarshal_ReadObjectFromFile()}, this function assumes
338 that no further objects will be read from the file, allowing it to
339 aggressively load file data into memory so that the de-serialization
340 can operate from data in memory rather than reading a byte at a time
341 from the file. Only use these variant if you are certain that you
342 won't be reading anything else from the file. On error, sets the
343 appropriate exception (\exception{EOFError} or
344 \exception{TypeError}) and returns \NULL.
345\end{cfuncdesc}
346
347\begin{cfuncdesc}{PyObject*}{PyMarshal_ReadObjectFromString}{char *string,
348 int len}
349 Return a Python object from the data stream in a character buffer
350 containing \var{len} bytes pointed to by \var{string}. On error,
351 sets the appropriate exception (\exception{EOFError} or
352 \exception{TypeError}) and returns \NULL.
353\end{cfuncdesc}
354
355
Fred Drake3adf79e2001-10-12 19:01:43 +0000356\section{Parsing arguments and building values
357 \label{arg-parsing}}
358
359These functions are useful when creating your own extensions functions
360and methods. Additional information and examples are available in
361\citetitle[../ext/ext.html]{Extending and Embedding the Python
362Interpreter}.
363
Fred Drake68304cc2002-04-05 23:01:14 +0000364The first three of these functions described,
365\cfunction{PyArg_ParseTuple()},
366\cfunction{PyArg_ParseTupleAndKeywords()}, and
367\cfunction{PyArg_Parse()}, all use \emph{format strings} which are
368used to tell the function about the expected arguments. The format
369strings use the same syntax for each of these functions.
370
371A format string consists of zero or more ``format units.'' A format
372unit describes one Python object; it is usually a single character or
373a parenthesized sequence of format units. With a few exceptions, a
374format unit that is not a parenthesized sequence normally corresponds
375to a single address argument to these functions. In the following
376description, the quoted form is the format unit; the entry in (round)
377parentheses is the Python object type that matches the format unit;
378and the entry in [square] brackets is the type of the C variable(s)
379whose address should be passed.
380
381\begin{description}
382 \item[\samp{s} (string or Unicode object) {[char *]}]
383 Convert a Python string or Unicode object to a C pointer to a
384 character string. You must not provide storage for the string
385 itself; a pointer to an existing string is stored into the character
386 pointer variable whose address you pass. The C string is
387 NUL-terminated. The Python string must not contain embedded NUL
388 bytes; if it does, a \exception{TypeError} exception is raised.
389 Unicode objects are converted to C strings using the default
390 encoding. If this conversion fails, a \exception{UnicodeError} is
391 raised.
392
393 \item[\samp{s\#} (string, Unicode or any read buffer compatible object)
394 {[char *, int]}]
395 This variant on \samp{s} stores into two C variables, the first one
396 a pointer to a character string, the second one its length. In this
397 case the Python string may contain embedded null bytes. Unicode
398 objects pass back a pointer to the default encoded string version of
399 the object if such a conversion is possible. All other read-buffer
400 compatible objects pass back a reference to the raw internal data
401 representation.
402
403 \item[\samp{z} (string or \code{None}) {[char *]}]
404 Like \samp{s}, but the Python object may also be \code{None}, in
405 which case the C pointer is set to \NULL.
406
407 \item[\samp{z\#} (string or \code{None} or any read buffer
408 compatible object) {[char *, int]}]
409 This is to \samp{s\#} as \samp{z} is to \samp{s}.
410
411 \item[\samp{u} (Unicode object) {[Py_UNICODE *]}]
412 Convert a Python Unicode object to a C pointer to a NUL-terminated
413 buffer of 16-bit Unicode (UTF-16) data. As with \samp{s}, there is
414 no need to provide storage for the Unicode data buffer; a pointer to
415 the existing Unicode data is stored into the \ctype{Py_UNICODE}
416 pointer variable whose address you pass.
417
418 \item[\samp{u\#} (Unicode object) {[Py_UNICODE *, int]}]
419 This variant on \samp{u} stores into two C variables, the first one
420 a pointer to a Unicode data buffer, the second one its length.
421 Non-Unicode objects are handled by interpreting their read-buffer
422 pointer as pointer to a \ctype{Py_UNICODE} array.
423
424 \item[\samp{es} (string, Unicode object or character buffer
425 compatible object) {[const char *encoding, char **buffer]}]
426 This variant on \samp{s} is used for encoding Unicode and objects
427 convertible to Unicode into a character buffer. It only works for
428 encoded data without embedded NUL bytes.
429
430 This format requires two arguments. The first is only used as
431 input, and must be a \ctype{char*} which points to the name of an
432 encoding as a NUL-terminated string, or \NULL, in which case the
433 default encoding is used. An exception is raised if the named
434 encoding is not known to Python. The second argument must be a
435 \ctype{char**}; the value of the pointer it references will be set
436 to a buffer with the contents of the argument text. The text will
437 be encoded in the encoding specified by the first argument.
438
439 \cfunction{PyArg_ParseTuple()} will allocate a buffer of the needed
440 size, copy the encoded data into this buffer and adjust
441 \var{*buffer} to reference the newly allocated storage. The caller
442 is responsible for calling \cfunction{PyMem_Free()} to free the
443 allocated buffer after use.
444
445 \item[\samp{et} (string, Unicode object or character buffer
446 compatible object) {[const char *encoding, char **buffer]}]
447 Same as \samp{es} except that 8-bit string objects are passed
448 through without recoding them. Instead, the implementation assumes
449 that the string object uses the encoding passed in as parameter.
450
451 \item[\samp{es\#} (string, Unicode object or character buffer compatible
452 object) {[const char *encoding, char **buffer, int *buffer_length]}]
453 This variant on \samp{s\#} is used for encoding Unicode and objects
454 convertible to Unicode into a character buffer. Unlike the
455 \samp{es} format, this variant allows input data which contains NUL
456 characters.
457
458 It requires three arguments. The first is only used as input, and
459 must be a \ctype{char*} which points to the name of an encoding as a
460 NUL-terminated string, or \NULL, in which case the default encoding
461 is used. An exception is raised if the named encoding is not known
462 to Python. The second argument must be a \ctype{char**}; the value
463 of the pointer it references will be set to a buffer with the
464 contents of the argument text. The text will be encoded in the
465 encoding specified by the first argument. The third argument must
466 be a pointer to an integer; the referenced integer will be set to
467 the number of bytes in the output buffer.
468
469 There are two modes of operation:
470
471 If \var{*buffer} points a \NULL{} pointer, the function will
472 allocate a buffer of the needed size, copy the encoded data into
473 this buffer and set \var{*buffer} to reference the newly allocated
474 storage. The caller is responsible for calling
475 \cfunction{PyMem_Free()} to free the allocated buffer after usage.
476
477 If \var{*buffer} points to a non-\NULL{} pointer (an already
478 allocated buffer), \cfunction{PyArg_ParseTuple()} will use this
479 location as the buffer and interpret the initial value of
480 \var{*buffer_length} as the buffer size. It will then copy the
481 encoded data into the buffer and NUL-terminate it. If the buffer
482 is not large enough, a \exception{ValueError} will be set.
483
484 In both cases, \var{*buffer_length} is set to the length of the
485 encoded data without the trailing NUL byte.
486
487 \item[\samp{et\#} (string, Unicode object or character buffer compatible
488 object) {[const char *encoding, char **buffer]}]
489 Same as \samp{es\#} except that string objects are passed through
490 without recoding them. Instead, the implementation assumes that the
491 string object uses the encoding passed in as parameter.
492
493 \item[\samp{b} (integer) {[char]}]
494 Convert a Python integer to a tiny int, stored in a C \ctype{char}.
495
496 \item[\samp{h} (integer) {[short int]}]
497 Convert a Python integer to a C \ctype{short int}.
498
499 \item[\samp{i} (integer) {[int]}]
500 Convert a Python integer to a plain C \ctype{int}.
501
502 \item[\samp{l} (integer) {[long int]}]
503 Convert a Python integer to a C \ctype{long int}.
504
505 \item[\samp{L} (integer) {[LONG_LONG]}]
506 Convert a Python integer to a C \ctype{long long}. This format is
507 only available on platforms that support \ctype{long long} (or
508 \ctype{_int64} on Windows).
509
510 \item[\samp{c} (string of length 1) {[char]}]
511 Convert a Python character, represented as a string of length 1, to
512 a C \ctype{char}.
513
514 \item[\samp{f} (float) {[float]}]
515 Convert a Python floating point number to a C \ctype{float}.
516
517 \item[\samp{d} (float) {[double]}]
518 Convert a Python floating point number to a C \ctype{double}.
519
520 \item[\samp{D} (complex) {[Py_complex]}]
521 Convert a Python complex number to a C \ctype{Py_complex} structure.
522
523 \item[\samp{O} (object) {[PyObject *]}]
524 Store a Python object (without any conversion) in a C object
525 pointer. The C program thus receives the actual object that was
526 passed. The object's reference count is not increased. The pointer
527 stored is not \NULL.
528
529 \item[\samp{O!} (object) {[\var{typeobject}, PyObject *]}]
530 Store a Python object in a C object pointer. This is similar to
531 \samp{O}, but takes two C arguments: the first is the address of a
532 Python type object, the second is the address of the C variable (of
533 type \ctype{PyObject*}) into which the object pointer is stored. If
534 the Python object does not have the required type,
535 \exception{TypeError} is raised.
536
537 \item[\samp{O\&} (object) {[\var{converter}, \var{anything}]}]
538 Convert a Python object to a C variable through a \var{converter}
539 function. This takes two arguments: the first is a function, the
540 second is the address of a C variable (of arbitrary type), converted
541 to \ctype{void *}. The \var{converter} function in turn is called
542 as follows:
543
544 \var{status}\code{ = }\var{converter}\code{(}\var{object},
545 \var{address}\code{);}
546
547 where \var{object} is the Python object to be converted and
548 \var{address} is the \ctype{void*} argument that was passed to the
549 \cfunction{PyArg_Parse*()} function. The returned \var{status}
550 should be \code{1} for a successful conversion and \code{0} if the
551 conversion has failed. When the conversion fails, the
552 \var{converter} function should raise an exception.
553
554 \item[\samp{S} (string) {[PyStringObject *]}]
555 Like \samp{O} but requires that the Python object is a string
556 object. Raises \exception{TypeError} if the object is not a string
557 object. The C variable may also be declared as \ctype{PyObject*}.
558
559 \item[\samp{U} (Unicode string) {[PyUnicodeObject *]}]
560 Like \samp{O} but requires that the Python object is a Unicode
561 object. Raises \exception{TypeError} if the object is not a Unicode
562 object. The C variable may also be declared as \ctype{PyObject*}.
563
564 \item[\samp{t\#} (read-only character buffer) {[char *, int]}]
565 Like \samp{s\#}, but accepts any object which implements the
566 read-only buffer interface. The \ctype{char*} variable is set to
567 point to the first byte of the buffer, and the \ctype{int} is set to
568 the length of the buffer. Only single-segment buffer objects are
569 accepted; \exception{TypeError} is raised for all others.
570
571 \item[\samp{w} (read-write character buffer) {[char *]}]
572 Similar to \samp{s}, but accepts any object which implements the
573 read-write buffer interface. The caller must determine the length
574 of the buffer by other means, or use \samp{w\#} instead. Only
575 single-segment buffer objects are accepted; \exception{TypeError} is
576 raised for all others.
577
578 \item[\samp{w\#} (read-write character buffer) {[char *, int]}]
579 Like \samp{s\#}, but accepts any object which implements the
580 read-write buffer interface. The \ctype{char *} variable is set to
581 point to the first byte of the buffer, and the \ctype{int} is set to
582 the length of the buffer. Only single-segment buffer objects are
583 accepted; \exception{TypeError} is raised for all others.
584
585 \item[\samp{(\var{items})} (tuple) {[\var{matching-items}]}]
586 The object must be a Python sequence whose length is the number of
587 format units in \var{items}. The C arguments must correspond to the
588 individual format units in \var{items}. Format units for sequences
589 may be nested.
590
591 \note{Prior to Python version 1.5.2, this format specifier only
592 accepted a tuple containing the individual parameters, not an
593 arbitrary sequence. Code which previously caused
594 \exception{TypeError} to be raised here may now proceed without an
595 exception. This is not expected to be a problem for existing code.}
596\end{description}
597
598It is possible to pass Python long integers where integers are
599requested; however no proper range checking is done --- the most
600significant bits are silently truncated when the receiving field is
601too small to receive the value (actually, the semantics are inherited
602from downcasts in C --- your mileage may vary).
603
604A few other characters have a meaning in a format string. These may
605not occur inside nested parentheses. They are:
606
607\begin{description}
608 \item[\samp{|}]
609 Indicates that the remaining arguments in the Python argument list
610 are optional. The C variables corresponding to optional arguments
611 should be initialized to their default value --- when an optional
612 argument is not specified, \cfunction{PyArg_ParseTuple()} does not
613 touch the contents of the corresponding C variable(s).
614
615 \item[\samp{:}]
616 The list of format units ends here; the string after the colon is
617 used as the function name in error messages (the ``associated
618 value'' of the exception that \cfunction{PyArg_ParseTuple()}
619 raises).
620
621 \item[\samp{;}]
622 The list of format units ends here; the string after the semicolon
623 is used as the error message \emph{instead} of the default error
624 message. Clearly, \samp{:} and \samp{;} mutually exclude each
625 other.
626\end{description}
627
628Note that any Python object references which are provided to the
629caller are \emph{borrowed} references; do not decrement their
630reference count!
631
632Additional arguments passed to these functions must be addresses of
633variables whose type is determined by the format string; these are
634used to store values from the input tuple. There are a few cases, as
635described in the list of format units above, where these parameters
636are used as input values; they should match what is specified for the
637corresponding format unit in that case.
638
639For the conversion to succeed, the \var{arg} object must match the
640format and the format must be exhausted. On success, the
641\cfunction{PyArg_Parse*()} functions return true, otherwise they
642return false and raise an appropriate exception.
643
Fred Drake3adf79e2001-10-12 19:01:43 +0000644\begin{cfuncdesc}{int}{PyArg_ParseTuple}{PyObject *args, char *format,
645 \moreargs}
646 Parse the parameters of a function that takes only positional
647 parameters into local variables. Returns true on success; on
Fred Drake68304cc2002-04-05 23:01:14 +0000648 failure, it returns false and raises the appropriate exception.
Fred Drake3adf79e2001-10-12 19:01:43 +0000649\end{cfuncdesc}
650
651\begin{cfuncdesc}{int}{PyArg_ParseTupleAndKeywords}{PyObject *args,
652 PyObject *kw, char *format, char *keywords[],
653 \moreargs}
654 Parse the parameters of a function that takes both positional and
655 keyword parameters into local variables. Returns true on success;
656 on failure, it returns false and raises the appropriate exception.
Fred Drake3adf79e2001-10-12 19:01:43 +0000657\end{cfuncdesc}
658
659\begin{cfuncdesc}{int}{PyArg_Parse}{PyObject *args, char *format,
660 \moreargs}
661 Function used to deconstruct the argument lists of ``old-style''
662 functions --- these are functions which use the
663 \constant{METH_OLDARGS} parameter parsing method. This is not
664 recommended for use in parameter parsing in new code, and most code
665 in the standard interpreter has been modified to no longer use this
666 for that purpose. It does remain a convenient way to decompose
667 other tuples, however, and may continue to be used for that
668 purpose.
669\end{cfuncdesc}
670
Fred Drakec84f2c52001-10-23 21:10:18 +0000671\begin{cfuncdesc}{int}{PyArg_UnpackTuple}{PyObject *args, char *name,
672 int min, int max, \moreargs}
673 A simpler form of parameter retrieval which does not use a format
674 string to specify the types of the arguments. Functions which use
675 this method to retrieve their parameters should be declared as
676 \constant{METH_VARARGS} in function or method tables. The tuple
677 containing the actual parameters should be passed as \var{args}; it
678 must actually be a tuple. The length of the tuple must be at least
679 \var{min} and no more than \var{max}; \var{min} and \var{max} may be
680 equal. Additional arguments must be passed to the function, each of
681 which should be a pointer to a \ctype{PyObject*} variable; these
682 will be filled in with the values from \var{args}; they will contain
683 borrowed references. The variables which correspond to optional
684 parameters not given by \var{args} will not be filled in; these
685 should be initialized by the caller.
686 This function returns true on success and false if \var{args} is not
687 a tuple or contains the wrong number of elements; an exception will
688 be set if there was a failure.
689
690 This is an example of the use of this function, taken from the
691 sources for the \module{_weakref} helper module for weak references:
692
693\begin{verbatim}
694static PyObject *
695weakref_ref(PyObject *self, PyObject *args)
696{
697 PyObject *object;
698 PyObject *callback = NULL;
699 PyObject *result = NULL;
700
701 if (PyArg_UnpackTuple(args, "ref", 1, 2, &object, &callback)) {
702 result = PyWeakref_NewRef(object, callback);
703 }
704 return result;
705}
706\end{verbatim}
707
708 The call to \cfunction{PyArg_UnpackTuple()} in this example is
709 entirely equivalent to this call to \cfunction{PyArg_ParseTuple()}:
710
711\begin{verbatim}
712PyArg_ParseTuple(args, "O|O:ref", &object, &callback)
713\end{verbatim}
714
715 \versionadded{2.2}
716\end{cfuncdesc}
717
Fred Drake3adf79e2001-10-12 19:01:43 +0000718\begin{cfuncdesc}{PyObject*}{Py_BuildValue}{char *format,
719 \moreargs}
720 Create a new value based on a format string similar to those
721 accepted by the \cfunction{PyArg_Parse*()} family of functions and a
722 sequence of values. Returns the value or \NULL{} in the case of an
Fred Drake68304cc2002-04-05 23:01:14 +0000723 error; an exception will be raised if \NULL{} is returned.
724
725 \cfunction{Py_BuildValue()} does not always build a tuple. It
726 builds a tuple only if its format string contains two or more format
727 units. If the format string is empty, it returns \code{None}; if it
728 contains exactly one format unit, it returns whatever object is
729 described by that format unit. To force it to return a tuple of
730 size 0 or one, parenthesize the format string.
731
732 When memory buffers are passed as parameters to supply data to build
733 objects, as for the \samp{s} and \samp{s\#} formats, the required
734 data is copied. Buffers provided by the caller are never referenced
735 by the objects created by \cfunction{Py_BuildValue()}. In other
736 words, if your code invokes \cfunction{malloc()} and passes the
737 allocated memory to \cfunction{Py_BuildValue()}, your code is
738 responsible for calling \cfunction{free()} for that memory once
739 \cfunction{Py_BuildValue()} returns.
740
741 In the following description, the quoted form is the format unit;
742 the entry in (round) parentheses is the Python object type that the
743 format unit will return; and the entry in [square] brackets is the
744 type of the C value(s) to be passed.
745
746 The characters space, tab, colon and comma are ignored in format
747 strings (but not within format units such as \samp{s\#}). This can
748 be used to make long format strings a tad more readable.
749
750 \begin{description}
751 \item[\samp{s} (string) {[char *]}]
752 Convert a null-terminated C string to a Python object. If the C
753 string pointer is \NULL, \code{None} is used.
754
755 \item[\samp{s\#} (string) {[char *, int]}]
756 Convert a C string and its length to a Python object. If the C
757 string pointer is \NULL, the length is ignored and \code{None} is
758 returned.
759
760 \item[\samp{z} (string or \code{None}) {[char *]}]
761 Same as \samp{s}.
762
763 \item[\samp{z\#} (string or \code{None}) {[char *, int]}]
764 Same as \samp{s\#}.
765
766 \item[\samp{u} (Unicode string) {[Py_UNICODE *]}]
767 Convert a null-terminated buffer of Unicode (UCS-2) data to a
768 Python Unicode object. If the Unicode buffer pointer is \NULL,
769 \code{None} is returned.
770
771 \item[\samp{u\#} (Unicode string) {[Py_UNICODE *, int]}]
772 Convert a Unicode (UCS-2) data buffer and its length to a Python
773 Unicode object. If the Unicode buffer pointer is \NULL, the
774 length is ignored and \code{None} is returned.
775
776 \item[\samp{i} (integer) {[int]}]
777 Convert a plain C \ctype{int} to a Python integer object.
778
779 \item[\samp{b} (integer) {[char]}]
780 Same as \samp{i}.
781
782 \item[\samp{h} (integer) {[short int]}]
783 Same as \samp{i}.
784
785 \item[\samp{l} (integer) {[long int]}]
786 Convert a C \ctype{long int} to a Python integer object.
787
788 \item[\samp{c} (string of length 1) {[char]}]
789 Convert a C \ctype{int} representing a character to a Python
790 string of length 1.
791
792 \item[\samp{d} (float) {[double]}]
793 Convert a C \ctype{double} to a Python floating point number.
794
795 \item[\samp{f} (float) {[float]}]
796 Same as \samp{d}.
797
798 \item[\samp{D} (complex) {[Py_complex *]}]
799 Convert a C \ctype{Py_complex} structure to a Python complex
800 number.
801
802 \item[\samp{O} (object) {[PyObject *]}]
803 Pass a Python object untouched (except for its reference count,
804 which is incremented by one). If the object passed in is a
805 \NULL{} pointer, it is assumed that this was caused because the
806 call producing the argument found an error and set an exception.
807 Therefore, \cfunction{Py_BuildValue()} will return \NULL{} but
808 won't raise an exception. If no exception has been raised yet,
809 \exception{SystemError} is set.
810
811 \item[\samp{S} (object) {[PyObject *]}]
812 Same as \samp{O}.
813
814 \item[\samp{U} (object) {[PyObject *]}]
815 Same as \samp{O}.
816
817 \item[\samp{N} (object) {[PyObject *]}]
818 Same as \samp{O}, except it doesn't increment the reference count
819 on the object. Useful when the object is created by a call to an
820 object constructor in the argument list.
821
822 \item[\samp{O\&} (object) {[\var{converter}, \var{anything}]}]
823 Convert \var{anything} to a Python object through a
824 \var{converter} function. The function is called with
825 \var{anything} (which should be compatible with \ctype{void *}) as
826 its argument and should return a ``new'' Python object, or \NULL{}
827 if an error occurred.
828
829 \item[\samp{(\var{items})} (tuple) {[\var{matching-items}]}]
830 Convert a sequence of C values to a Python tuple with the same
831 number of items.
832
833 \item[\samp{[\var{items}]} (list) {[\var{matching-items}]}]
834 Convert a sequence of C values to a Python list with the same
835 number of items.
836
837 \item[\samp{\{\var{items}\}} (dictionary) {[\var{matching-items}]}]
838 Convert a sequence of C values to a Python dictionary. Each pair
839 of consecutive C values adds one item to the dictionary, serving
840 as key and value, respectively.
841
842 \end{description}
843
844 If there is an error in the format string, the
845 \exception{SystemError} exception is set and \NULL{} returned.
Fred Drake3adf79e2001-10-12 19:01:43 +0000846\end{cfuncdesc}