blob: 9cc7a1935098d036aa4fd8a4073f635969beb7cb [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,
Raymond Hettinger92016dc2003-09-22 15:27:11 +0000150 create a new one and insert it 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
Martin v. Löwisef82d2f2004-06-27 16:51:46 +0000286The module supports two versions of the data format: version 0 is the
287historical version, version 1 (new in Python 2.4) shares interned
288strings in the file, and upon unmarshalling. \var{Py_MARSHAL_VERSION}
289indicates the current file format (currently 1).
290
291\begin{cfuncdesc}{void}{PyMarshal_WriteLongToFile}{long value, FILE *file, int version}
Fred Drake0fae49f2001-10-14 04:45:51 +0000292 Marshal a \ctype{long} integer, \var{value}, to \var{file}. This
293 will only write the least-significant 32 bits of \var{value};
294 regardless of the size of the native \ctype{long} type.
Martin v. Löwisef82d2f2004-06-27 16:51:46 +0000295
296 \versionchanged[\var{version} indicates the file format]{2.4}
Fred Drake0fae49f2001-10-14 04:45:51 +0000297\end{cfuncdesc}
298
Fred Drake0fae49f2001-10-14 04:45:51 +0000299\begin{cfuncdesc}{void}{PyMarshal_WriteObjectToFile}{PyObject *value,
Martin v. Löwisef82d2f2004-06-27 16:51:46 +0000300 FILE *file, int version}
Fred Drakeb0840172002-06-17 15:44:18 +0000301 Marshal a Python object, \var{value}, to \var{file}.
Martin v. Löwisef82d2f2004-06-27 16:51:46 +0000302
303 \versionchanged[\var{version} indicates the file format]{2.4}
Fred Drake0fae49f2001-10-14 04:45:51 +0000304\end{cfuncdesc}
305
Martin v. Löwisef82d2f2004-06-27 16:51:46 +0000306\begin{cfuncdesc}{PyObject*}{PyMarshal_WriteObjectToString}{PyObject *value, int version}
Fred Drake0fae49f2001-10-14 04:45:51 +0000307 Return a string object containing the marshalled representation of
308 \var{value}.
Martin v. Löwisef82d2f2004-06-27 16:51:46 +0000309
310 \versionchanged[\var{version} indicates the file format]{2.4}
Fred Drake0fae49f2001-10-14 04:45:51 +0000311\end{cfuncdesc}
312
313The following functions allow marshalled values to be read back in.
314
315XXX What about error detection? It appears that reading past the end
316of the file will always result in a negative numeric value (where
317that's relevant), but it's not clear that negative values won't be
318handled properly when there's no error. What's the right way to tell?
319Should only non-negative values be written using these routines?
320
321\begin{cfuncdesc}{long}{PyMarshal_ReadLongFromFile}{FILE *file}
322 Return a C \ctype{long} from the data stream in a \ctype{FILE*}
323 opened for reading. Only a 32-bit value can be read in using
324 this function, regardless of the native size of \ctype{long}.
325\end{cfuncdesc}
326
327\begin{cfuncdesc}{int}{PyMarshal_ReadShortFromFile}{FILE *file}
328 Return a C \ctype{short} from the data stream in a \ctype{FILE*}
329 opened for reading. Only a 16-bit value can be read in using
Fred Drakeb0840172002-06-17 15:44:18 +0000330 this function, regardless of the native size of \ctype{short}.
Fred Drake0fae49f2001-10-14 04:45:51 +0000331\end{cfuncdesc}
332
333\begin{cfuncdesc}{PyObject*}{PyMarshal_ReadObjectFromFile}{FILE *file}
334 Return a Python object from the data stream in a \ctype{FILE*}
335 opened for reading. On error, sets the appropriate exception
336 (\exception{EOFError} or \exception{TypeError}) and returns \NULL.
337\end{cfuncdesc}
338
339\begin{cfuncdesc}{PyObject*}{PyMarshal_ReadLastObjectFromFile}{FILE *file}
340 Return a Python object from the data stream in a \ctype{FILE*}
341 opened for reading. Unlike
342 \cfunction{PyMarshal_ReadObjectFromFile()}, this function assumes
343 that no further objects will be read from the file, allowing it to
344 aggressively load file data into memory so that the de-serialization
345 can operate from data in memory rather than reading a byte at a time
346 from the file. Only use these variant if you are certain that you
347 won't be reading anything else from the file. On error, sets the
348 appropriate exception (\exception{EOFError} or
349 \exception{TypeError}) and returns \NULL.
350\end{cfuncdesc}
351
352\begin{cfuncdesc}{PyObject*}{PyMarshal_ReadObjectFromString}{char *string,
353 int len}
354 Return a Python object from the data stream in a character buffer
355 containing \var{len} bytes pointed to by \var{string}. On error,
356 sets the appropriate exception (\exception{EOFError} or
357 \exception{TypeError}) and returns \NULL.
358\end{cfuncdesc}
359
360
Fred Drake3adf79e2001-10-12 19:01:43 +0000361\section{Parsing arguments and building values
362 \label{arg-parsing}}
363
364These functions are useful when creating your own extensions functions
365and methods. Additional information and examples are available in
366\citetitle[../ext/ext.html]{Extending and Embedding the Python
367Interpreter}.
368
Fred Drake68304cc2002-04-05 23:01:14 +0000369The first three of these functions described,
370\cfunction{PyArg_ParseTuple()},
371\cfunction{PyArg_ParseTupleAndKeywords()}, and
372\cfunction{PyArg_Parse()}, all use \emph{format strings} which are
373used to tell the function about the expected arguments. The format
374strings use the same syntax for each of these functions.
375
376A format string consists of zero or more ``format units.'' A format
377unit describes one Python object; it is usually a single character or
378a parenthesized sequence of format units. With a few exceptions, a
379format unit that is not a parenthesized sequence normally corresponds
380to a single address argument to these functions. In the following
381description, the quoted form is the format unit; the entry in (round)
382parentheses is the Python object type that matches the format unit;
383and the entry in [square] brackets is the type of the C variable(s)
384whose address should be passed.
385
386\begin{description}
Brett Cannond88471f2004-07-01 20:55:42 +0000387 \item[\samp{s} (string or Unicode object) {[const char *]}]
Fred Drake68304cc2002-04-05 23:01:14 +0000388 Convert a Python string or Unicode object to a C pointer to a
389 character string. You must not provide storage for the string
390 itself; a pointer to an existing string is stored into the character
391 pointer variable whose address you pass. The C string is
392 NUL-terminated. The Python string must not contain embedded NUL
393 bytes; if it does, a \exception{TypeError} exception is raised.
394 Unicode objects are converted to C strings using the default
395 encoding. If this conversion fails, a \exception{UnicodeError} is
396 raised.
397
398 \item[\samp{s\#} (string, Unicode or any read buffer compatible object)
Brett Cannond88471f2004-07-01 20:55:42 +0000399 {[const char *, int]}]
Fred Drake68304cc2002-04-05 23:01:14 +0000400 This variant on \samp{s} stores into two C variables, the first one
401 a pointer to a character string, the second one its length. In this
402 case the Python string may contain embedded null bytes. Unicode
403 objects pass back a pointer to the default encoded string version of
404 the object if such a conversion is possible. All other read-buffer
405 compatible objects pass back a reference to the raw internal data
406 representation.
407
Brett Cannond88471f2004-07-01 20:55:42 +0000408 \item[\samp{z} (string or \code{None}) {[const char *]}]
Fred Drake68304cc2002-04-05 23:01:14 +0000409 Like \samp{s}, but the Python object may also be \code{None}, in
410 which case the C pointer is set to \NULL.
411
412 \item[\samp{z\#} (string or \code{None} or any read buffer
Brett Cannond88471f2004-07-01 20:55:42 +0000413 compatible object) {[const char *, int]}]
Fred Drake68304cc2002-04-05 23:01:14 +0000414 This is to \samp{s\#} as \samp{z} is to \samp{s}.
415
416 \item[\samp{u} (Unicode object) {[Py_UNICODE *]}]
417 Convert a Python Unicode object to a C pointer to a NUL-terminated
418 buffer of 16-bit Unicode (UTF-16) data. As with \samp{s}, there is
419 no need to provide storage for the Unicode data buffer; a pointer to
420 the existing Unicode data is stored into the \ctype{Py_UNICODE}
421 pointer variable whose address you pass.
422
423 \item[\samp{u\#} (Unicode object) {[Py_UNICODE *, int]}]
424 This variant on \samp{u} stores into two C variables, the first one
425 a pointer to a Unicode data buffer, the second one its length.
426 Non-Unicode objects are handled by interpreting their read-buffer
427 pointer as pointer to a \ctype{Py_UNICODE} array.
428
429 \item[\samp{es} (string, Unicode object or character buffer
430 compatible object) {[const char *encoding, char **buffer]}]
431 This variant on \samp{s} is used for encoding Unicode and objects
432 convertible to Unicode into a character buffer. It only works for
433 encoded data without embedded NUL bytes.
434
435 This format requires two arguments. The first is only used as
Brett Cannond88471f2004-07-01 20:55:42 +0000436 input, and must be a \ctype{const char*} which points to the name of an
Fred Drake68304cc2002-04-05 23:01:14 +0000437 encoding as a NUL-terminated string, or \NULL, in which case the
438 default encoding is used. An exception is raised if the named
439 encoding is not known to Python. The second argument must be a
440 \ctype{char**}; the value of the pointer it references will be set
441 to a buffer with the contents of the argument text. The text will
442 be encoded in the encoding specified by the first argument.
443
444 \cfunction{PyArg_ParseTuple()} will allocate a buffer of the needed
445 size, copy the encoded data into this buffer and adjust
446 \var{*buffer} to reference the newly allocated storage. The caller
447 is responsible for calling \cfunction{PyMem_Free()} to free the
448 allocated buffer after use.
449
450 \item[\samp{et} (string, Unicode object or character buffer
451 compatible object) {[const char *encoding, char **buffer]}]
452 Same as \samp{es} except that 8-bit string objects are passed
453 through without recoding them. Instead, the implementation assumes
454 that the string object uses the encoding passed in as parameter.
455
456 \item[\samp{es\#} (string, Unicode object or character buffer compatible
457 object) {[const char *encoding, char **buffer, int *buffer_length]}]
458 This variant on \samp{s\#} is used for encoding Unicode and objects
459 convertible to Unicode into a character buffer. Unlike the
460 \samp{es} format, this variant allows input data which contains NUL
461 characters.
462
463 It requires three arguments. The first is only used as input, and
Brett Cannond88471f2004-07-01 20:55:42 +0000464 must be a \ctype{const char*} which points to the name of an encoding as a
Fred Drake68304cc2002-04-05 23:01:14 +0000465 NUL-terminated string, or \NULL, in which case the default encoding
466 is used. An exception is raised if the named encoding is not known
467 to Python. The second argument must be a \ctype{char**}; the value
468 of the pointer it references will be set to a buffer with the
469 contents of the argument text. The text will be encoded in the
470 encoding specified by the first argument. The third argument must
471 be a pointer to an integer; the referenced integer will be set to
472 the number of bytes in the output buffer.
473
474 There are two modes of operation:
475
476 If \var{*buffer} points a \NULL{} pointer, the function will
477 allocate a buffer of the needed size, copy the encoded data into
478 this buffer and set \var{*buffer} to reference the newly allocated
479 storage. The caller is responsible for calling
480 \cfunction{PyMem_Free()} to free the allocated buffer after usage.
481
482 If \var{*buffer} points to a non-\NULL{} pointer (an already
483 allocated buffer), \cfunction{PyArg_ParseTuple()} will use this
484 location as the buffer and interpret the initial value of
485 \var{*buffer_length} as the buffer size. It will then copy the
486 encoded data into the buffer and NUL-terminate it. If the buffer
487 is not large enough, a \exception{ValueError} will be set.
488
489 In both cases, \var{*buffer_length} is set to the length of the
490 encoded data without the trailing NUL byte.
491
492 \item[\samp{et\#} (string, Unicode object or character buffer compatible
493 object) {[const char *encoding, char **buffer]}]
494 Same as \samp{es\#} except that string objects are passed through
495 without recoding them. Instead, the implementation assumes that the
496 string object uses the encoding passed in as parameter.
497
498 \item[\samp{b} (integer) {[char]}]
499 Convert a Python integer to a tiny int, stored in a C \ctype{char}.
500
Thomas Heller42a11722003-04-23 19:27:35 +0000501 \item[\samp{B} (integer) {[unsigned char]}]
502 Convert a Python integer to a tiny int without overflow checking,
503 stored in a C \ctype{unsigned char}. \versionadded{2.3}
504
Fred Drake68304cc2002-04-05 23:01:14 +0000505 \item[\samp{h} (integer) {[short int]}]
506 Convert a Python integer to a C \ctype{short int}.
507
Thomas Heller42a11722003-04-23 19:27:35 +0000508 \item[\samp{H} (integer) {[unsigned short int]}]
509 Convert a Python integer to a C \ctype{unsigned short int}, without
510 overflow checking. \versionadded{2.3}
511
Fred Drake68304cc2002-04-05 23:01:14 +0000512 \item[\samp{i} (integer) {[int]}]
513 Convert a Python integer to a plain C \ctype{int}.
514
Thomas Heller42a11722003-04-23 19:27:35 +0000515 \item[\samp{I} (integer) {[unsigned int]}]
516 Convert a Python integer to a C \ctype{unsigned int}, without
517 overflow checking. \versionadded{2.3}
518
Fred Drake68304cc2002-04-05 23:01:14 +0000519 \item[\samp{l} (integer) {[long int]}]
520 Convert a Python integer to a C \ctype{long int}.
521
Thomas Heller42a11722003-04-23 19:27:35 +0000522 \item[\samp{k} (integer) {[unsigned long]}]
523 Convert a Python integer to a C \ctype{unsigned long} without
524 overflow checking. \versionadded{2.3}
525
Martin v. Löwisb9a0f912003-03-29 10:06:18 +0000526 \item[\samp{L} (integer) {[PY_LONG_LONG]}]
Fred Drake68304cc2002-04-05 23:01:14 +0000527 Convert a Python integer to a C \ctype{long long}. This format is
528 only available on platforms that support \ctype{long long} (or
529 \ctype{_int64} on Windows).
530
Thomas Heller42a11722003-04-23 19:27:35 +0000531 \item[\samp{K} (integer) {[unsigned PY_LONG_LONG]}]
532 Convert a Python integer to a C \ctype{unsigned long long}
533 without overflow checking. This format is only available on
534 platforms that support \ctype{unsigned long long} (or
535 \ctype{unsigned _int64} on Windows). \versionadded{2.3}
536
Fred Drake68304cc2002-04-05 23:01:14 +0000537 \item[\samp{c} (string of length 1) {[char]}]
538 Convert a Python character, represented as a string of length 1, to
539 a C \ctype{char}.
540
541 \item[\samp{f} (float) {[float]}]
542 Convert a Python floating point number to a C \ctype{float}.
543
544 \item[\samp{d} (float) {[double]}]
545 Convert a Python floating point number to a C \ctype{double}.
546
547 \item[\samp{D} (complex) {[Py_complex]}]
548 Convert a Python complex number to a C \ctype{Py_complex} structure.
549
550 \item[\samp{O} (object) {[PyObject *]}]
551 Store a Python object (without any conversion) in a C object
552 pointer. The C program thus receives the actual object that was
553 passed. The object's reference count is not increased. The pointer
554 stored is not \NULL.
555
556 \item[\samp{O!} (object) {[\var{typeobject}, PyObject *]}]
557 Store a Python object in a C object pointer. This is similar to
558 \samp{O}, but takes two C arguments: the first is the address of a
559 Python type object, the second is the address of the C variable (of
560 type \ctype{PyObject*}) into which the object pointer is stored. If
561 the Python object does not have the required type,
562 \exception{TypeError} is raised.
563
564 \item[\samp{O\&} (object) {[\var{converter}, \var{anything}]}]
565 Convert a Python object to a C variable through a \var{converter}
566 function. This takes two arguments: the first is a function, the
567 second is the address of a C variable (of arbitrary type), converted
568 to \ctype{void *}. The \var{converter} function in turn is called
569 as follows:
570
571 \var{status}\code{ = }\var{converter}\code{(}\var{object},
572 \var{address}\code{);}
573
574 where \var{object} is the Python object to be converted and
575 \var{address} is the \ctype{void*} argument that was passed to the
576 \cfunction{PyArg_Parse*()} function. The returned \var{status}
577 should be \code{1} for a successful conversion and \code{0} if the
578 conversion has failed. When the conversion fails, the
579 \var{converter} function should raise an exception.
580
581 \item[\samp{S} (string) {[PyStringObject *]}]
582 Like \samp{O} but requires that the Python object is a string
583 object. Raises \exception{TypeError} if the object is not a string
584 object. The C variable may also be declared as \ctype{PyObject*}.
585
586 \item[\samp{U} (Unicode string) {[PyUnicodeObject *]}]
587 Like \samp{O} but requires that the Python object is a Unicode
588 object. Raises \exception{TypeError} if the object is not a Unicode
589 object. The C variable may also be declared as \ctype{PyObject*}.
590
591 \item[\samp{t\#} (read-only character buffer) {[char *, int]}]
592 Like \samp{s\#}, but accepts any object which implements the
593 read-only buffer interface. The \ctype{char*} variable is set to
594 point to the first byte of the buffer, and the \ctype{int} is set to
595 the length of the buffer. Only single-segment buffer objects are
596 accepted; \exception{TypeError} is raised for all others.
597
598 \item[\samp{w} (read-write character buffer) {[char *]}]
599 Similar to \samp{s}, but accepts any object which implements the
600 read-write buffer interface. The caller must determine the length
601 of the buffer by other means, or use \samp{w\#} instead. Only
602 single-segment buffer objects are accepted; \exception{TypeError} is
603 raised for all others.
604
605 \item[\samp{w\#} (read-write character buffer) {[char *, int]}]
606 Like \samp{s\#}, but accepts any object which implements the
607 read-write buffer interface. The \ctype{char *} variable is set to
608 point to the first byte of the buffer, and the \ctype{int} is set to
609 the length of the buffer. Only single-segment buffer objects are
610 accepted; \exception{TypeError} is raised for all others.
611
612 \item[\samp{(\var{items})} (tuple) {[\var{matching-items}]}]
613 The object must be a Python sequence whose length is the number of
614 format units in \var{items}. The C arguments must correspond to the
615 individual format units in \var{items}. Format units for sequences
616 may be nested.
617
618 \note{Prior to Python version 1.5.2, this format specifier only
619 accepted a tuple containing the individual parameters, not an
620 arbitrary sequence. Code which previously caused
621 \exception{TypeError} to be raised here may now proceed without an
622 exception. This is not expected to be a problem for existing code.}
623\end{description}
624
625It is possible to pass Python long integers where integers are
626requested; however no proper range checking is done --- the most
627significant bits are silently truncated when the receiving field is
628too small to receive the value (actually, the semantics are inherited
629from downcasts in C --- your mileage may vary).
630
631A few other characters have a meaning in a format string. These may
632not occur inside nested parentheses. They are:
633
634\begin{description}
635 \item[\samp{|}]
636 Indicates that the remaining arguments in the Python argument list
637 are optional. The C variables corresponding to optional arguments
638 should be initialized to their default value --- when an optional
639 argument is not specified, \cfunction{PyArg_ParseTuple()} does not
640 touch the contents of the corresponding C variable(s).
641
642 \item[\samp{:}]
643 The list of format units ends here; the string after the colon is
644 used as the function name in error messages (the ``associated
645 value'' of the exception that \cfunction{PyArg_ParseTuple()}
646 raises).
647
648 \item[\samp{;}]
649 The list of format units ends here; the string after the semicolon
650 is used as the error message \emph{instead} of the default error
651 message. Clearly, \samp{:} and \samp{;} mutually exclude each
652 other.
653\end{description}
654
655Note that any Python object references which are provided to the
656caller are \emph{borrowed} references; do not decrement their
657reference count!
658
659Additional arguments passed to these functions must be addresses of
660variables whose type is determined by the format string; these are
661used to store values from the input tuple. There are a few cases, as
662described in the list of format units above, where these parameters
663are used as input values; they should match what is specified for the
664corresponding format unit in that case.
665
666For the conversion to succeed, the \var{arg} object must match the
667format and the format must be exhausted. On success, the
668\cfunction{PyArg_Parse*()} functions return true, otherwise they
669return false and raise an appropriate exception.
670
Fred Drake3adf79e2001-10-12 19:01:43 +0000671\begin{cfuncdesc}{int}{PyArg_ParseTuple}{PyObject *args, char *format,
672 \moreargs}
673 Parse the parameters of a function that takes only positional
674 parameters into local variables. Returns true on success; on
Fred Drake68304cc2002-04-05 23:01:14 +0000675 failure, it returns false and raises the appropriate exception.
Fred Drake3adf79e2001-10-12 19:01:43 +0000676\end{cfuncdesc}
677
678\begin{cfuncdesc}{int}{PyArg_ParseTupleAndKeywords}{PyObject *args,
679 PyObject *kw, char *format, char *keywords[],
680 \moreargs}
681 Parse the parameters of a function that takes both positional and
682 keyword parameters into local variables. Returns true on success;
683 on failure, it returns false and raises the appropriate exception.
Fred Drake3adf79e2001-10-12 19:01:43 +0000684\end{cfuncdesc}
685
686\begin{cfuncdesc}{int}{PyArg_Parse}{PyObject *args, char *format,
687 \moreargs}
688 Function used to deconstruct the argument lists of ``old-style''
689 functions --- these are functions which use the
690 \constant{METH_OLDARGS} parameter parsing method. This is not
691 recommended for use in parameter parsing in new code, and most code
692 in the standard interpreter has been modified to no longer use this
693 for that purpose. It does remain a convenient way to decompose
694 other tuples, however, and may continue to be used for that
695 purpose.
696\end{cfuncdesc}
697
Fred Drakec84f2c52001-10-23 21:10:18 +0000698\begin{cfuncdesc}{int}{PyArg_UnpackTuple}{PyObject *args, char *name,
699 int min, int max, \moreargs}
700 A simpler form of parameter retrieval which does not use a format
701 string to specify the types of the arguments. Functions which use
702 this method to retrieve their parameters should be declared as
703 \constant{METH_VARARGS} in function or method tables. The tuple
704 containing the actual parameters should be passed as \var{args}; it
705 must actually be a tuple. The length of the tuple must be at least
706 \var{min} and no more than \var{max}; \var{min} and \var{max} may be
707 equal. Additional arguments must be passed to the function, each of
708 which should be a pointer to a \ctype{PyObject*} variable; these
709 will be filled in with the values from \var{args}; they will contain
710 borrowed references. The variables which correspond to optional
711 parameters not given by \var{args} will not be filled in; these
712 should be initialized by the caller.
713 This function returns true on success and false if \var{args} is not
714 a tuple or contains the wrong number of elements; an exception will
715 be set if there was a failure.
716
717 This is an example of the use of this function, taken from the
718 sources for the \module{_weakref} helper module for weak references:
719
720\begin{verbatim}
721static PyObject *
722weakref_ref(PyObject *self, PyObject *args)
723{
724 PyObject *object;
725 PyObject *callback = NULL;
726 PyObject *result = NULL;
727
728 if (PyArg_UnpackTuple(args, "ref", 1, 2, &object, &callback)) {
729 result = PyWeakref_NewRef(object, callback);
730 }
731 return result;
732}
733\end{verbatim}
734
735 The call to \cfunction{PyArg_UnpackTuple()} in this example is
736 entirely equivalent to this call to \cfunction{PyArg_ParseTuple()}:
737
738\begin{verbatim}
739PyArg_ParseTuple(args, "O|O:ref", &object, &callback)
740\end{verbatim}
741
742 \versionadded{2.2}
743\end{cfuncdesc}
744
Fred Drake3adf79e2001-10-12 19:01:43 +0000745\begin{cfuncdesc}{PyObject*}{Py_BuildValue}{char *format,
746 \moreargs}
747 Create a new value based on a format string similar to those
748 accepted by the \cfunction{PyArg_Parse*()} family of functions and a
749 sequence of values. Returns the value or \NULL{} in the case of an
Fred Drake68304cc2002-04-05 23:01:14 +0000750 error; an exception will be raised if \NULL{} is returned.
751
752 \cfunction{Py_BuildValue()} does not always build a tuple. It
753 builds a tuple only if its format string contains two or more format
754 units. If the format string is empty, it returns \code{None}; if it
755 contains exactly one format unit, it returns whatever object is
756 described by that format unit. To force it to return a tuple of
757 size 0 or one, parenthesize the format string.
758
759 When memory buffers are passed as parameters to supply data to build
760 objects, as for the \samp{s} and \samp{s\#} formats, the required
761 data is copied. Buffers provided by the caller are never referenced
762 by the objects created by \cfunction{Py_BuildValue()}. In other
763 words, if your code invokes \cfunction{malloc()} and passes the
764 allocated memory to \cfunction{Py_BuildValue()}, your code is
765 responsible for calling \cfunction{free()} for that memory once
766 \cfunction{Py_BuildValue()} returns.
767
768 In the following description, the quoted form is the format unit;
769 the entry in (round) parentheses is the Python object type that the
770 format unit will return; and the entry in [square] brackets is the
771 type of the C value(s) to be passed.
772
773 The characters space, tab, colon and comma are ignored in format
774 strings (but not within format units such as \samp{s\#}). This can
775 be used to make long format strings a tad more readable.
776
777 \begin{description}
778 \item[\samp{s} (string) {[char *]}]
779 Convert a null-terminated C string to a Python object. If the C
780 string pointer is \NULL, \code{None} is used.
781
782 \item[\samp{s\#} (string) {[char *, int]}]
783 Convert a C string and its length to a Python object. If the C
784 string pointer is \NULL, the length is ignored and \code{None} is
785 returned.
786
787 \item[\samp{z} (string or \code{None}) {[char *]}]
788 Same as \samp{s}.
789
790 \item[\samp{z\#} (string or \code{None}) {[char *, int]}]
791 Same as \samp{s\#}.
792
793 \item[\samp{u} (Unicode string) {[Py_UNICODE *]}]
Martin v. Löwis9bc4f2d2004-06-03 09:55:28 +0000794 Convert a null-terminated buffer of Unicode (UCS-2 or UCS-4)
795 data to a Python Unicode object. If the Unicode buffer pointer
796 is \NULL, \code{None} is returned.
Fred Drake68304cc2002-04-05 23:01:14 +0000797
798 \item[\samp{u\#} (Unicode string) {[Py_UNICODE *, int]}]
Martin v. Löwis9bc4f2d2004-06-03 09:55:28 +0000799 Convert a Unicode (UCS-2 or UCS-4) data buffer and its length
800 to a Python Unicode object. If the Unicode buffer pointer
801 is \NULL, the length is ignored and \code{None} is returned.
Fred Drake68304cc2002-04-05 23:01:14 +0000802
803 \item[\samp{i} (integer) {[int]}]
804 Convert a plain C \ctype{int} to a Python integer object.
805
806 \item[\samp{b} (integer) {[char]}]
807 Same as \samp{i}.
808
809 \item[\samp{h} (integer) {[short int]}]
810 Same as \samp{i}.
811
812 \item[\samp{l} (integer) {[long int]}]
813 Convert a C \ctype{long int} to a Python integer object.
814
815 \item[\samp{c} (string of length 1) {[char]}]
816 Convert a C \ctype{int} representing a character to a Python
817 string of length 1.
818
819 \item[\samp{d} (float) {[double]}]
820 Convert a C \ctype{double} to a Python floating point number.
821
822 \item[\samp{f} (float) {[float]}]
823 Same as \samp{d}.
824
825 \item[\samp{D} (complex) {[Py_complex *]}]
826 Convert a C \ctype{Py_complex} structure to a Python complex
827 number.
828
829 \item[\samp{O} (object) {[PyObject *]}]
830 Pass a Python object untouched (except for its reference count,
831 which is incremented by one). If the object passed in is a
832 \NULL{} pointer, it is assumed that this was caused because the
833 call producing the argument found an error and set an exception.
834 Therefore, \cfunction{Py_BuildValue()} will return \NULL{} but
835 won't raise an exception. If no exception has been raised yet,
836 \exception{SystemError} is set.
837
838 \item[\samp{S} (object) {[PyObject *]}]
839 Same as \samp{O}.
840
Fred Drake68304cc2002-04-05 23:01:14 +0000841 \item[\samp{N} (object) {[PyObject *]}]
842 Same as \samp{O}, except it doesn't increment the reference count
843 on the object. Useful when the object is created by a call to an
844 object constructor in the argument list.
845
846 \item[\samp{O\&} (object) {[\var{converter}, \var{anything}]}]
847 Convert \var{anything} to a Python object through a
848 \var{converter} function. The function is called with
849 \var{anything} (which should be compatible with \ctype{void *}) as
850 its argument and should return a ``new'' Python object, or \NULL{}
851 if an error occurred.
852
853 \item[\samp{(\var{items})} (tuple) {[\var{matching-items}]}]
854 Convert a sequence of C values to a Python tuple with the same
855 number of items.
856
857 \item[\samp{[\var{items}]} (list) {[\var{matching-items}]}]
858 Convert a sequence of C values to a Python list with the same
859 number of items.
860
861 \item[\samp{\{\var{items}\}} (dictionary) {[\var{matching-items}]}]
862 Convert a sequence of C values to a Python dictionary. Each pair
863 of consecutive C values adds one item to the dictionary, serving
864 as key and value, respectively.
865
866 \end{description}
867
868 If there is an error in the format string, the
869 \exception{SystemError} exception is set and \NULL{} returned.
Fred Drake3adf79e2001-10-12 19:01:43 +0000870\end{cfuncdesc}