blob: d9e85b0da95a442b874d1f2b489638cd02e8d092 [file] [log] [blame]
Georg Brandl8ec7f652007-08-15 14:28:01 +00001.. highlightlang:: c
2
3
4.. _utilities:
5
6*********
7Utilities
8*********
9
10The functions in this chapter perform various utility tasks, ranging from
11helping C code be more portable across platforms, using Python modules from C,
12and parsing function arguments and constructing Python values from C values.
13
14
15.. _os:
16
17Operating System Utilities
18==========================
19
20
21.. cfunction:: int Py_FdIsInteractive(FILE *fp, const char *filename)
22
23 Return true (nonzero) if the standard I/O file *fp* with name *filename* is
24 deemed interactive. This is the case for files for which ``isatty(fileno(fp))``
25 is true. If the global flag :cdata:`Py_InteractiveFlag` is true, this function
26 also returns true if the *filename* pointer is *NULL* or if the name is equal to
27 one of the strings ``'<stdin>'`` or ``'???'``.
28
29
30.. cfunction:: long PyOS_GetLastModificationTime(char *filename)
31
32 Return the time of last modification of the file *filename*. The result is
33 encoded in the same way as the timestamp returned by the standard C library
34 function :cfunc:`time`.
35
36
37.. cfunction:: void PyOS_AfterFork()
38
39 Function to update some internal state after a process fork; this should be
40 called in the new process if the Python interpreter will continue to be used.
41 If a new executable is loaded into the new process, this function does not need
42 to be called.
43
44
45.. cfunction:: int PyOS_CheckStack()
46
47 Return true when the interpreter runs out of stack space. This is a reliable
48 check, but is only available when :const:`USE_STACKCHECK` is defined (currently
49 on Windows using the Microsoft Visual C++ compiler). :const:`USE_STACKCHECK`
50 will be defined automatically; you should never change the definition in your
51 own code.
52
53
54.. cfunction:: PyOS_sighandler_t PyOS_getsig(int i)
55
56 Return the current signal handler for signal *i*. This is a thin wrapper around
57 either :cfunc:`sigaction` or :cfunc:`signal`. Do not call those functions
58 directly! :ctype:`PyOS_sighandler_t` is a typedef alias for :ctype:`void
59 (\*)(int)`.
60
61
62.. cfunction:: PyOS_sighandler_t PyOS_setsig(int i, PyOS_sighandler_t h)
63
64 Set the signal handler for signal *i* to be *h*; return the old signal handler.
65 This is a thin wrapper around either :cfunc:`sigaction` or :cfunc:`signal`. Do
66 not call those functions directly! :ctype:`PyOS_sighandler_t` is a typedef
67 alias for :ctype:`void (\*)(int)`.
68
Georg Brandlf19b9512007-12-02 21:58:54 +000069.. _systemfunctions:
70
71System Functions
72================
73
74These are utility functions that make functionality from the :mod:`sys` module
75accessible to C code. They all work with the current interpreter thread's
76:mod:`sys` module's dict, which is contained in the internal thread state structure.
77
78.. cfunction:: PyObject *PySys_GetObject(char *name)
79
80 Return the object *name* from the :mod:`sys` module or *NULL* if it does
81 not exist, without setting an exception.
82
83.. cfunction:: FILE *PySys_GetFile(char *name, FILE *def)
84
85 Return the :ctype:`FILE*` associated with the object *name* in the
86 :mod:`sys` module, or *def* if *name* is not in the module or is not associated
87 with a :ctype:`FILE*`.
88
89.. cfunction:: int PySys_SetObject(char *name, PyObject *v)
90
91 Set *name* in the :mod:`sys` module to *v* unless *v* is *NULL*, in which
92 case *name* is deleted from the sys module. Returns ``0`` on success, ``-1``
93 on error.
94
95.. cfunction:: void PySys_ResetWarnOptions(void)
96
97 Reset :data:`sys.warnoptions` to an empty list.
98
99.. cfunction:: void PySys_AddWarnOption(char *s)
100
101 Append *s* to :data:`sys.warnoptions`.
102
103.. cfunction:: void PySys_SetPath(char *path)
104
105 Set :data:`sys.path` to a list object of paths found in *path* which should
106 be a list of paths separated with the platform's search path delimiter
107 (``:`` on Unix, ``;`` on Windows).
108
109.. cfunction:: void PySys_WriteStdout(const char *format, ...)
110
111 Write the output string described by *format* to :data:`sys.stdout`. No
112 exceptions are raised, even if truncation occurs (see below).
113
114 *format* should limit the total size of the formatted output string to
115 1000 bytes or less -- after 1000 bytes, the output string is truncated.
116 In particular, this means that no unrestricted "%s" formats should occur;
117 these should be limited using "%.<N>s" where <N> is a decimal number
118 calculated so that <N> plus the maximum size of other formatted text does not
119 exceed 1000 bytes. Also watch out for "%f", which can print hundreds of
120 digits for very large numbers.
121
122 If a problem occurs, or :data:`sys.stdout` is unset, the formatted message
123 is written to the real (C level) *stdout*.
124
125.. cfunction:: void PySys_WriteStderr(const char *format, ...)
126
127 As above, but write to :data:`sys.stderr` or *stderr* instead.
128
Georg Brandl8ec7f652007-08-15 14:28:01 +0000129
130.. _processcontrol:
131
132Process Control
133===============
134
135
136.. cfunction:: void Py_FatalError(const char *message)
137
138 .. index:: single: abort()
139
140 Print a fatal error message and kill the process. No cleanup is performed.
141 This function should only be invoked when a condition is detected that would
142 make it dangerous to continue using the Python interpreter; e.g., when the
143 object administration appears to be corrupted. On Unix, the standard C library
144 function :cfunc:`abort` is called which will attempt to produce a :file:`core`
145 file.
146
147
148.. cfunction:: void Py_Exit(int status)
149
150 .. index::
151 single: Py_Finalize()
152 single: exit()
153
154 Exit the current process. This calls :cfunc:`Py_Finalize` and then calls the
155 standard C library function ``exit(status)``.
156
157
158.. cfunction:: int Py_AtExit(void (*func) ())
159
160 .. index::
161 single: Py_Finalize()
162 single: cleanup functions
163
164 Register a cleanup function to be called by :cfunc:`Py_Finalize`. The cleanup
165 function will be called with no arguments and should return no value. At most
166 32 cleanup functions can be registered. When the registration is successful,
167 :cfunc:`Py_AtExit` returns ``0``; on failure, it returns ``-1``. The cleanup
168 function registered last is called first. Each cleanup function will be called
169 at most once. Since Python's internal finalization will have completed before
170 the cleanup function, no Python APIs should be called by *func*.
171
172
173.. _importing:
174
175Importing Modules
176=================
177
178
179.. cfunction:: PyObject* PyImport_ImportModule(const char *name)
180
181 .. index::
182 single: package variable; __all__
183 single: __all__ (package variable)
184
185 This is a simplified interface to :cfunc:`PyImport_ImportModuleEx` below,
Christian Heimes000a0742008-01-03 22:16:32 +0000186 leaving the *globals* and *locals* arguments set to *NULL* and *level* set
187 to 0. When the *name*
Georg Brandl8ec7f652007-08-15 14:28:01 +0000188 argument contains a dot (when it specifies a submodule of a package), the
189 *fromlist* argument is set to the list ``['*']`` so that the return value is the
190 named module rather than the top-level package containing it as would otherwise
191 be the case. (Unfortunately, this has an additional side effect when *name* in
192 fact specifies a subpackage instead of a submodule: the submodules specified in
193 the package's ``__all__`` variable are loaded.) Return a new reference to the
194 imported module, or *NULL* with an exception set on failure. Before Python 2.4,
195 the module may still be created in the failure case --- examine ``sys.modules``
196 to find out. Starting with Python 2.4, a failing import of a module no longer
197 leaves the module in ``sys.modules``.
198
199 .. versionchanged:: 2.4
200 failing imports remove incomplete module objects.
201
Christian Heimes000a0742008-01-03 22:16:32 +0000202 .. versionchanged:: 2.6
203 always use absolute imports
204
Georg Brandl8ec7f652007-08-15 14:28:01 +0000205 .. index:: single: modules (in module sys)
206
207
Christian Heimes000a0742008-01-03 22:16:32 +0000208.. cfunction:: PyObject* PyImport_ImportModuleNoBlock(const char *name)
209
210 .. index::
211 single: `cfunc:PyImport_ImportModule`
212
213 This version of `cfunc:PyImport_ImportModule` does not block. It's intended
214 to be used in C function which import other modules to execute a function.
215 The import may block if another thread holds the import lock. The function
216 `cfunc:PyImport_ImportModuleNoBlock` doesn't block. It first tries to fetch
217 the module from sys.modules and falls back to `cfunc:PyImport_ImportModule`
218 unless the the lock is hold. In the latter case the function raises an
219 ImportError.
220
221 .. versionadded:: 2.6
222
223
Georg Brandl8ec7f652007-08-15 14:28:01 +0000224.. cfunction:: PyObject* PyImport_ImportModuleEx(char *name, PyObject *globals, PyObject *locals, PyObject *fromlist)
225
226 .. index:: builtin: __import__
227
228 Import a module. This is best described by referring to the built-in Python
229 function :func:`__import__`, as the standard :func:`__import__` function calls
230 this function directly.
231
232 The return value is a new reference to the imported module or top-level package,
233 or *NULL* with an exception set on failure (before Python 2.4, the module may
234 still be created in this case). Like for :func:`__import__`, the return value
235 when a submodule of a package was requested is normally the top-level package,
236 unless a non-empty *fromlist* was given.
237
238 .. versionchanged:: 2.4
239 failing imports remove incomplete module objects.
240
Christian Heimes000a0742008-01-03 22:16:32 +0000241 .. versionchanged:: 2.6
242 The function is an alias for `cfunc:PyImport_ImportModuleLevel` with
243 -1 as level, meaning relative import.
244
245
246.. cfunction:: PyObject* PyImport_ImportModuleLevel(char *name, PyObject *globals, PyObject *locals, PyObject *fromlist, int level)
247
248 Import a module. This is best described by referring to the built-in Python
249 function :func:`__import__`, as the standard :func:`__import__` function calls
250 this function directly.
251
252 The return value is a new reference to the imported module or top-level package,
253 or *NULL* with an exception set on failure. Like for :func:`__import__`,
254 the return value when a submodule of a package was requested is normally the
255 top-level package, unless a non-empty *fromlist* was given.
256
257 ..versionadded:: 2.5
258
Georg Brandl8ec7f652007-08-15 14:28:01 +0000259
260.. cfunction:: PyObject* PyImport_Import(PyObject *name)
261
262 .. index::
263 module: rexec
264 module: ihooks
265
266 This is a higher-level interface that calls the current "import hook function".
267 It invokes the :func:`__import__` function from the ``__builtins__`` of the
268 current globals. This means that the import is done using whatever import hooks
269 are installed in the current environment, e.g. by :mod:`rexec` or :mod:`ihooks`.
270
Christian Heimes000a0742008-01-03 22:16:32 +0000271 .. versionchanged:: 2.6
272 always use absolute imports
273
Georg Brandl8ec7f652007-08-15 14:28:01 +0000274
275.. cfunction:: PyObject* PyImport_ReloadModule(PyObject *m)
276
277 .. index:: builtin: reload
278
279 Reload a module. This is best described by referring to the built-in Python
280 function :func:`reload`, as the standard :func:`reload` function calls this
281 function directly. Return a new reference to the reloaded module, or *NULL*
282 with an exception set on failure (the module still exists in this case).
283
284
285.. cfunction:: PyObject* PyImport_AddModule(const char *name)
286
287 Return the module object corresponding to a module name. The *name* argument
288 may be of the form ``package.module``. First check the modules dictionary if
289 there's one there, and if not, create a new one and insert it in the modules
290 dictionary. Return *NULL* with an exception set on failure.
291
292 .. note::
293
294 This function does not load or import the module; if the module wasn't already
295 loaded, you will get an empty module object. Use :cfunc:`PyImport_ImportModule`
296 or one of its variants to import a module. Package structures implied by a
297 dotted name for *name* are not created if not already present.
298
299
300.. cfunction:: PyObject* PyImport_ExecCodeModule(char *name, PyObject *co)
301
302 .. index:: builtin: compile
303
304 Given a module name (possibly of the form ``package.module``) and a code object
305 read from a Python bytecode file or obtained from the built-in function
306 :func:`compile`, load the module. Return a new reference to the module object,
307 or *NULL* with an exception set if an error occurred. Before Python 2.4, the
308 module could still be created in error cases. Starting with Python 2.4, *name*
309 is removed from ``sys.modules`` in error cases, and even if *name* was already
310 in ``sys.modules`` on entry to :cfunc:`PyImport_ExecCodeModule`. Leaving
311 incompletely initialized modules in ``sys.modules`` is dangerous, as imports of
312 such modules have no way to know that the module object is an unknown (and
313 probably damaged with respect to the module author's intents) state.
314
315 This function will reload the module if it was already imported. See
316 :cfunc:`PyImport_ReloadModule` for the intended way to reload a module.
317
318 If *name* points to a dotted name of the form ``package.module``, any package
319 structures not already created will still not be created.
320
321 .. versionchanged:: 2.4
322 *name* is removed from ``sys.modules`` in error cases.
323
324
325.. cfunction:: long PyImport_GetMagicNumber()
326
327 Return the magic number for Python bytecode files (a.k.a. :file:`.pyc` and
328 :file:`.pyo` files). The magic number should be present in the first four bytes
329 of the bytecode file, in little-endian byte order.
330
331
332.. cfunction:: PyObject* PyImport_GetModuleDict()
333
334 Return the dictionary used for the module administration (a.k.a.
335 ``sys.modules``). Note that this is a per-interpreter variable.
336
337
338.. cfunction:: void _PyImport_Init()
339
340 Initialize the import mechanism. For internal use only.
341
342
343.. cfunction:: void PyImport_Cleanup()
344
345 Empty the module table. For internal use only.
346
347
348.. cfunction:: void _PyImport_Fini()
349
350 Finalize the import mechanism. For internal use only.
351
352
353.. cfunction:: PyObject* _PyImport_FindExtension(char *, char *)
354
355 For internal use only.
356
357
358.. cfunction:: PyObject* _PyImport_FixupExtension(char *, char *)
359
360 For internal use only.
361
362
363.. cfunction:: int PyImport_ImportFrozenModule(char *name)
364
365 Load a frozen module named *name*. Return ``1`` for success, ``0`` if the
366 module is not found, and ``-1`` with an exception set if the initialization
367 failed. To access the imported module on a successful load, use
368 :cfunc:`PyImport_ImportModule`. (Note the misnomer --- this function would
369 reload the module if it was already imported.)
370
371
372.. ctype:: struct _frozen
373
374 .. index:: single: freeze utility
375
376 This is the structure type definition for frozen module descriptors, as
377 generated by the :program:`freeze` utility (see :file:`Tools/freeze/` in the
378 Python source distribution). Its definition, found in :file:`Include/import.h`,
379 is::
380
381 struct _frozen {
382 char *name;
383 unsigned char *code;
384 int size;
385 };
386
387
388.. cvar:: struct _frozen* PyImport_FrozenModules
389
390 This pointer is initialized to point to an array of :ctype:`struct _frozen`
391 records, terminated by one whose members are all *NULL* or zero. When a frozen
392 module is imported, it is searched in this table. Third-party code could play
393 tricks with this to provide a dynamically created collection of frozen modules.
394
395
396.. cfunction:: int PyImport_AppendInittab(char *name, void (*initfunc)(void))
397
398 Add a single module to the existing table of built-in modules. This is a
399 convenience wrapper around :cfunc:`PyImport_ExtendInittab`, returning ``-1`` if
400 the table could not be extended. The new module can be imported by the name
401 *name*, and uses the function *initfunc* as the initialization function called
402 on the first attempted import. This should be called before
403 :cfunc:`Py_Initialize`.
404
405
406.. ctype:: struct _inittab
407
408 Structure describing a single entry in the list of built-in modules. Each of
409 these structures gives the name and initialization function for a module built
410 into the interpreter. Programs which embed Python may use an array of these
411 structures in conjunction with :cfunc:`PyImport_ExtendInittab` to provide
412 additional built-in modules. The structure is defined in
413 :file:`Include/import.h` as::
414
415 struct _inittab {
416 char *name;
417 void (*initfunc)(void);
418 };
419
420
421.. cfunction:: int PyImport_ExtendInittab(struct _inittab *newtab)
422
423 Add a collection of modules to the table of built-in modules. The *newtab*
424 array must end with a sentinel entry which contains *NULL* for the :attr:`name`
425 field; failure to provide the sentinel value can result in a memory fault.
426 Returns ``0`` on success or ``-1`` if insufficient memory could be allocated to
427 extend the internal table. In the event of failure, no modules are added to the
428 internal table. This should be called before :cfunc:`Py_Initialize`.
429
430
431.. _marshalling-utils:
432
433Data marshalling support
434========================
435
436These routines allow C code to work with serialized objects using the same data
437format as the :mod:`marshal` module. There are functions to write data into the
438serialization format, and additional functions that can be used to read the data
439back. Files used to store marshalled data must be opened in binary mode.
440
441Numeric values are stored with the least significant byte first.
442
443The module supports two versions of the data format: version 0 is the historical
444version, version 1 (new in Python 2.4) shares interned strings in the file, and
445upon unmarshalling. *Py_MARSHAL_VERSION* indicates the current file format
446(currently 1).
447
448
449.. cfunction:: void PyMarshal_WriteLongToFile(long value, FILE *file, int version)
450
451 Marshal a :ctype:`long` integer, *value*, to *file*. This will only write the
452 least-significant 32 bits of *value*; regardless of the size of the native
453 :ctype:`long` type.
454
455 .. versionchanged:: 2.4
456 *version* indicates the file format.
457
458
459.. cfunction:: void PyMarshal_WriteObjectToFile(PyObject *value, FILE *file, int version)
460
461 Marshal a Python object, *value*, to *file*.
462
463 .. versionchanged:: 2.4
464 *version* indicates the file format.
465
466
467.. cfunction:: PyObject* PyMarshal_WriteObjectToString(PyObject *value, int version)
468
469 Return a string object containing the marshalled representation of *value*.
470
471 .. versionchanged:: 2.4
472 *version* indicates the file format.
473
474
475The following functions allow marshalled values to be read back in.
476
477XXX What about error detection? It appears that reading past the end of the
478file will always result in a negative numeric value (where that's relevant), but
479it's not clear that negative values won't be handled properly when there's no
480error. What's the right way to tell? Should only non-negative values be written
481using these routines?
482
483
484.. cfunction:: long PyMarshal_ReadLongFromFile(FILE *file)
485
486 Return a C :ctype:`long` from the data stream in a :ctype:`FILE\*` opened for
487 reading. Only a 32-bit value can be read in using this function, regardless of
488 the native size of :ctype:`long`.
489
490
491.. cfunction:: int PyMarshal_ReadShortFromFile(FILE *file)
492
493 Return a C :ctype:`short` from the data stream in a :ctype:`FILE\*` opened for
494 reading. Only a 16-bit value can be read in using this function, regardless of
495 the native size of :ctype:`short`.
496
497
498.. cfunction:: PyObject* PyMarshal_ReadObjectFromFile(FILE *file)
499
500 Return a Python object from the data stream in a :ctype:`FILE\*` opened for
501 reading. On error, sets the appropriate exception (:exc:`EOFError` or
502 :exc:`TypeError`) and returns *NULL*.
503
504
505.. cfunction:: PyObject* PyMarshal_ReadLastObjectFromFile(FILE *file)
506
507 Return a Python object from the data stream in a :ctype:`FILE\*` opened for
508 reading. Unlike :cfunc:`PyMarshal_ReadObjectFromFile`, this function assumes
509 that no further objects will be read from the file, allowing it to aggressively
510 load file data into memory so that the de-serialization can operate from data in
511 memory rather than reading a byte at a time from the file. Only use these
512 variant if you are certain that you won't be reading anything else from the
513 file. On error, sets the appropriate exception (:exc:`EOFError` or
514 :exc:`TypeError`) and returns *NULL*.
515
516
517.. cfunction:: PyObject* PyMarshal_ReadObjectFromString(char *string, Py_ssize_t len)
518
519 Return a Python object from the data stream in a character buffer containing
520 *len* bytes pointed to by *string*. On error, sets the appropriate exception
521 (:exc:`EOFError` or :exc:`TypeError`) and returns *NULL*.
522
523
524.. _arg-parsing:
525
526Parsing arguments and building values
527=====================================
528
529These functions are useful when creating your own extensions functions and
530methods. Additional information and examples are available in
531:ref:`extending-index`.
532
533The first three of these functions described, :cfunc:`PyArg_ParseTuple`,
534:cfunc:`PyArg_ParseTupleAndKeywords`, and :cfunc:`PyArg_Parse`, all use *format
535strings* which are used to tell the function about the expected arguments. The
536format strings use the same syntax for each of these functions.
537
538A format string consists of zero or more "format units." A format unit
539describes one Python object; it is usually a single character or a parenthesized
540sequence of format units. With a few exceptions, a format unit that is not a
541parenthesized sequence normally corresponds to a single address argument to
542these functions. In the following description, the quoted form is the format
543unit; the entry in (round) parentheses is the Python object type that matches
544the format unit; and the entry in [square] brackets is the type of the C
545variable(s) whose address should be passed.
546
547``s`` (string or Unicode object) [const char \*]
548 Convert a Python string or Unicode object to a C pointer to a character string.
549 You must not provide storage for the string itself; a pointer to an existing
550 string is stored into the character pointer variable whose address you pass.
551 The C string is NUL-terminated. The Python string must not contain embedded NUL
552 bytes; if it does, a :exc:`TypeError` exception is raised. Unicode objects are
553 converted to C strings using the default encoding. If this conversion fails, a
554 :exc:`UnicodeError` is raised.
555
556``s#`` (string, Unicode or any read buffer compatible object) [const char \*, int]
557 This variant on ``s`` stores into two C variables, the first one a pointer to a
558 character string, the second one its length. In this case the Python string may
559 contain embedded null bytes. Unicode objects pass back a pointer to the default
560 encoded string version of the object if such a conversion is possible. All
561 other read-buffer compatible objects pass back a reference to the raw internal
562 data representation.
563
564``z`` (string or ``None``) [const char \*]
565 Like ``s``, but the Python object may also be ``None``, in which case the C
566 pointer is set to *NULL*.
567
568``z#`` (string or ``None`` or any read buffer compatible object) [const char \*, int]
569 This is to ``s#`` as ``z`` is to ``s``.
570
571``u`` (Unicode object) [Py_UNICODE \*]
572 Convert a Python Unicode object to a C pointer to a NUL-terminated buffer of
573 16-bit Unicode (UTF-16) data. As with ``s``, there is no need to provide
574 storage for the Unicode data buffer; a pointer to the existing Unicode data is
575 stored into the :ctype:`Py_UNICODE` pointer variable whose address you pass.
576
577``u#`` (Unicode object) [Py_UNICODE \*, int]
578 This variant on ``u`` stores into two C variables, the first one a pointer to a
579 Unicode data buffer, the second one its length. Non-Unicode objects are handled
580 by interpreting their read-buffer pointer as pointer to a :ctype:`Py_UNICODE`
581 array.
582
583``es`` (string, Unicode object or character buffer compatible object) [const char \*encoding, char \*\*buffer]
584 This variant on ``s`` is used for encoding Unicode and objects convertible to
585 Unicode into a character buffer. It only works for encoded data without embedded
586 NUL bytes.
587
588 This format requires two arguments. The first is only used as input, and
589 must be a :ctype:`const char\*` which points to the name of an encoding as a
590 NUL-terminated string, or *NULL*, in which case the default encoding is used.
591 An exception is raised if the named encoding is not known to Python. The
592 second argument must be a :ctype:`char\*\*`; the value of the pointer it
593 references will be set to a buffer with the contents of the argument text.
594 The text will be encoded in the encoding specified by the first argument.
595
596 :cfunc:`PyArg_ParseTuple` will allocate a buffer of the needed size, copy the
597 encoded data into this buffer and adjust *\*buffer* to reference the newly
598 allocated storage. The caller is responsible for calling :cfunc:`PyMem_Free` to
599 free the allocated buffer after use.
600
601``et`` (string, Unicode object or character buffer compatible object) [const char \*encoding, char \*\*buffer]
602 Same as ``es`` except that 8-bit string objects are passed through without
603 recoding them. Instead, the implementation assumes that the string object uses
604 the encoding passed in as parameter.
605
606``es#`` (string, Unicode object or character buffer compatible object) [const char \*encoding, char \*\*buffer, int \*buffer_length]
607 This variant on ``s#`` is used for encoding Unicode and objects convertible to
608 Unicode into a character buffer. Unlike the ``es`` format, this variant allows
609 input data which contains NUL characters.
610
611 It requires three arguments. The first is only used as input, and must be a
612 :ctype:`const char\*` which points to the name of an encoding as a
613 NUL-terminated string, or *NULL*, in which case the default encoding is used.
614 An exception is raised if the named encoding is not known to Python. The
615 second argument must be a :ctype:`char\*\*`; the value of the pointer it
616 references will be set to a buffer with the contents of the argument text.
617 The text will be encoded in the encoding specified by the first argument.
618 The third argument must be a pointer to an integer; the referenced integer
619 will be set to the number of bytes in the output buffer.
620
621 There are two modes of operation:
622
623 If *\*buffer* points a *NULL* pointer, the function will allocate a buffer of
624 the needed size, copy the encoded data into this buffer and set *\*buffer* to
625 reference the newly allocated storage. The caller is responsible for calling
626 :cfunc:`PyMem_Free` to free the allocated buffer after usage.
627
628 If *\*buffer* points to a non-*NULL* pointer (an already allocated buffer),
629 :cfunc:`PyArg_ParseTuple` will use this location as the buffer and interpret the
630 initial value of *\*buffer_length* as the buffer size. It will then copy the
631 encoded data into the buffer and NUL-terminate it. If the buffer is not large
632 enough, a :exc:`ValueError` will be set.
633
634 In both cases, *\*buffer_length* is set to the length of the encoded data
635 without the trailing NUL byte.
636
637``et#`` (string, Unicode object or character buffer compatible object) [const char \*encoding, char \*\*buffer]
638 Same as ``es#`` except that string objects are passed through without recoding
639 them. Instead, the implementation assumes that the string object uses the
640 encoding passed in as parameter.
641
642``b`` (integer) [char]
643 Convert a Python integer to a tiny int, stored in a C :ctype:`char`.
644
645``B`` (integer) [unsigned char]
646 Convert a Python integer to a tiny int without overflow checking, stored in a C
647 :ctype:`unsigned char`.
648
649 .. versionadded:: 2.3
650
651``h`` (integer) [short int]
652 Convert a Python integer to a C :ctype:`short int`.
653
654``H`` (integer) [unsigned short int]
655 Convert a Python integer to a C :ctype:`unsigned short int`, without overflow
656 checking.
657
658 .. versionadded:: 2.3
659
660``i`` (integer) [int]
661 Convert a Python integer to a plain C :ctype:`int`.
662
663``I`` (integer) [unsigned int]
664 Convert a Python integer to a C :ctype:`unsigned int`, without overflow
665 checking.
666
667 .. versionadded:: 2.3
668
669``l`` (integer) [long int]
670 Convert a Python integer to a C :ctype:`long int`.
671
672``k`` (integer) [unsigned long]
673 Convert a Python integer or long integer to a C :ctype:`unsigned long` without
674 overflow checking.
675
676 .. versionadded:: 2.3
677
678``L`` (integer) [PY_LONG_LONG]
679 Convert a Python integer to a C :ctype:`long long`. This format is only
680 available on platforms that support :ctype:`long long` (or :ctype:`_int64` on
681 Windows).
682
683``K`` (integer) [unsigned PY_LONG_LONG]
684 Convert a Python integer or long integer to a C :ctype:`unsigned long long`
685 without overflow checking. This format is only available on platforms that
686 support :ctype:`unsigned long long` (or :ctype:`unsigned _int64` on Windows).
687
688 .. versionadded:: 2.3
689
690``n`` (integer) [Py_ssize_t]
691 Convert a Python integer or long integer to a C :ctype:`Py_ssize_t`.
692
693 .. versionadded:: 2.5
694
695``c`` (string of length 1) [char]
696 Convert a Python character, represented as a string of length 1, to a C
697 :ctype:`char`.
698
699``f`` (float) [float]
700 Convert a Python floating point number to a C :ctype:`float`.
701
702``d`` (float) [double]
703 Convert a Python floating point number to a C :ctype:`double`.
704
705``D`` (complex) [Py_complex]
706 Convert a Python complex number to a C :ctype:`Py_complex` structure.
707
708``O`` (object) [PyObject \*]
709 Store a Python object (without any conversion) in a C object pointer. The C
710 program thus receives the actual object that was passed. The object's reference
711 count is not increased. The pointer stored is not *NULL*.
712
713``O!`` (object) [*typeobject*, PyObject \*]
714 Store a Python object in a C object pointer. This is similar to ``O``, but
715 takes two C arguments: the first is the address of a Python type object, the
716 second is the address of the C variable (of type :ctype:`PyObject\*`) into which
717 the object pointer is stored. If the Python object does not have the required
718 type, :exc:`TypeError` is raised.
719
720``O&`` (object) [*converter*, *anything*]
721 Convert a Python object to a C variable through a *converter* function. This
722 takes two arguments: the first is a function, the second is the address of a C
723 variable (of arbitrary type), converted to :ctype:`void \*`. The *converter*
724 function in turn is called as follows::
725
726 status = converter(object, address);
727
728 where *object* is the Python object to be converted and *address* is the
729 :ctype:`void\*` argument that was passed to the :cfunc:`PyArg_Parse\*` function.
730 The returned *status* should be ``1`` for a successful conversion and ``0`` if
731 the conversion has failed. When the conversion fails, the *converter* function
732 should raise an exception.
733
734``S`` (string) [PyStringObject \*]
735 Like ``O`` but requires that the Python object is a string object. Raises
736 :exc:`TypeError` if the object is not a string object. The C variable may also
737 be declared as :ctype:`PyObject\*`.
738
739``U`` (Unicode string) [PyUnicodeObject \*]
740 Like ``O`` but requires that the Python object is a Unicode object. Raises
741 :exc:`TypeError` if the object is not a Unicode object. The C variable may also
742 be declared as :ctype:`PyObject\*`.
743
744``t#`` (read-only character buffer) [char \*, int]
745 Like ``s#``, but accepts any object which implements the read-only buffer
746 interface. The :ctype:`char\*` variable is set to point to the first byte of
747 the buffer, and the :ctype:`int` is set to the length of the buffer. Only
748 single-segment buffer objects are accepted; :exc:`TypeError` is raised for all
749 others.
750
751``w`` (read-write character buffer) [char \*]
752 Similar to ``s``, but accepts any object which implements the read-write buffer
753 interface. The caller must determine the length of the buffer by other means,
754 or use ``w#`` instead. Only single-segment buffer objects are accepted;
755 :exc:`TypeError` is raised for all others.
756
757``w#`` (read-write character buffer) [char \*, int]
758 Like ``s#``, but accepts any object which implements the read-write buffer
759 interface. The :ctype:`char \*` variable is set to point to the first byte of
760 the buffer, and the :ctype:`int` is set to the length of the buffer. Only
761 single-segment buffer objects are accepted; :exc:`TypeError` is raised for all
762 others.
763
764``(items)`` (tuple) [*matching-items*]
765 The object must be a Python sequence whose length is the number of format units
766 in *items*. The C arguments must correspond to the individual format units in
767 *items*. Format units for sequences may be nested.
768
769 .. note::
770
771 Prior to Python version 1.5.2, this format specifier only accepted a tuple
772 containing the individual parameters, not an arbitrary sequence. Code which
773 previously caused :exc:`TypeError` to be raised here may now proceed without an
774 exception. This is not expected to be a problem for existing code.
775
776It is possible to pass Python long integers where integers are requested;
777however no proper range checking is done --- the most significant bits are
778silently truncated when the receiving field is too small to receive the value
779(actually, the semantics are inherited from downcasts in C --- your mileage may
780vary).
781
782A few other characters have a meaning in a format string. These may not occur
783inside nested parentheses. They are:
784
785``|``
786 Indicates that the remaining arguments in the Python argument list are optional.
787 The C variables corresponding to optional arguments should be initialized to
788 their default value --- when an optional argument is not specified,
789 :cfunc:`PyArg_ParseTuple` does not touch the contents of the corresponding C
790 variable(s).
791
792``:``
793 The list of format units ends here; the string after the colon is used as the
794 function name in error messages (the "associated value" of the exception that
795 :cfunc:`PyArg_ParseTuple` raises).
796
797``;``
798 The list of format units ends here; the string after the semicolon is used as
799 the error message *instead* of the default error message. Clearly, ``:`` and
800 ``;`` mutually exclude each other.
801
802Note that any Python object references which are provided to the caller are
803*borrowed* references; do not decrement their reference count!
804
805Additional arguments passed to these functions must be addresses of variables
806whose type is determined by the format string; these are used to store values
807from the input tuple. There are a few cases, as described in the list of format
808units above, where these parameters are used as input values; they should match
809what is specified for the corresponding format unit in that case.
810
811For the conversion to succeed, the *arg* object must match the format and the
812format must be exhausted. On success, the :cfunc:`PyArg_Parse\*` functions
813return true, otherwise they return false and raise an appropriate exception.
814
815
816.. cfunction:: int PyArg_ParseTuple(PyObject *args, const char *format, ...)
817
818 Parse the parameters of a function that takes only positional parameters into
819 local variables. Returns true on success; on failure, it returns false and
820 raises the appropriate exception.
821
822
823.. cfunction:: int PyArg_VaParse(PyObject *args, const char *format, va_list vargs)
824
825 Identical to :cfunc:`PyArg_ParseTuple`, except that it accepts a va_list rather
826 than a variable number of arguments.
827
828
829.. cfunction:: int PyArg_ParseTupleAndKeywords(PyObject *args, PyObject *kw, const char *format, char *keywords[], ...)
830
831 Parse the parameters of a function that takes both positional and keyword
832 parameters into local variables. Returns true on success; on failure, it
833 returns false and raises the appropriate exception.
834
835
836.. cfunction:: int PyArg_VaParseTupleAndKeywords(PyObject *args, PyObject *kw, const char *format, char *keywords[], va_list vargs)
837
838 Identical to :cfunc:`PyArg_ParseTupleAndKeywords`, except that it accepts a
839 va_list rather than a variable number of arguments.
840
841
842.. cfunction:: int PyArg_Parse(PyObject *args, const char *format, ...)
843
844 Function used to deconstruct the argument lists of "old-style" functions ---
845 these are functions which use the :const:`METH_OLDARGS` parameter parsing
846 method. This is not recommended for use in parameter parsing in new code, and
847 most code in the standard interpreter has been modified to no longer use this
848 for that purpose. It does remain a convenient way to decompose other tuples,
849 however, and may continue to be used for that purpose.
850
851
852.. cfunction:: int PyArg_UnpackTuple(PyObject *args, const char *name, Py_ssize_t min, Py_ssize_t max, ...)
853
854 A simpler form of parameter retrieval which does not use a format string to
855 specify the types of the arguments. Functions which use this method to retrieve
856 their parameters should be declared as :const:`METH_VARARGS` in function or
857 method tables. The tuple containing the actual parameters should be passed as
858 *args*; it must actually be a tuple. The length of the tuple must be at least
859 *min* and no more than *max*; *min* and *max* may be equal. Additional
860 arguments must be passed to the function, each of which should be a pointer to a
861 :ctype:`PyObject\*` variable; these will be filled in with the values from
862 *args*; they will contain borrowed references. The variables which correspond
863 to optional parameters not given by *args* will not be filled in; these should
864 be initialized by the caller. This function returns true on success and false if
865 *args* is not a tuple or contains the wrong number of elements; an exception
866 will be set if there was a failure.
867
868 This is an example of the use of this function, taken from the sources for the
869 :mod:`_weakref` helper module for weak references::
870
871 static PyObject *
872 weakref_ref(PyObject *self, PyObject *args)
873 {
874 PyObject *object;
875 PyObject *callback = NULL;
876 PyObject *result = NULL;
877
878 if (PyArg_UnpackTuple(args, "ref", 1, 2, &object, &callback)) {
879 result = PyWeakref_NewRef(object, callback);
880 }
881 return result;
882 }
883
884 The call to :cfunc:`PyArg_UnpackTuple` in this example is entirely equivalent to
885 this call to :cfunc:`PyArg_ParseTuple`::
886
887 PyArg_ParseTuple(args, "O|O:ref", &object, &callback)
888
889 .. versionadded:: 2.2
890
891
892.. cfunction:: PyObject* Py_BuildValue(const char *format, ...)
893
894 Create a new value based on a format string similar to those accepted by the
895 :cfunc:`PyArg_Parse\*` family of functions and a sequence of values. Returns
896 the value or *NULL* in the case of an error; an exception will be raised if
897 *NULL* is returned.
898
899 :cfunc:`Py_BuildValue` does not always build a tuple. It builds a tuple only if
900 its format string contains two or more format units. If the format string is
901 empty, it returns ``None``; if it contains exactly one format unit, it returns
902 whatever object is described by that format unit. To force it to return a tuple
903 of size 0 or one, parenthesize the format string.
904
905 When memory buffers are passed as parameters to supply data to build objects, as
906 for the ``s`` and ``s#`` formats, the required data is copied. Buffers provided
907 by the caller are never referenced by the objects created by
908 :cfunc:`Py_BuildValue`. In other words, if your code invokes :cfunc:`malloc`
909 and passes the allocated memory to :cfunc:`Py_BuildValue`, your code is
910 responsible for calling :cfunc:`free` for that memory once
911 :cfunc:`Py_BuildValue` returns.
912
913 In the following description, the quoted form is the format unit; the entry in
914 (round) parentheses is the Python object type that the format unit will return;
915 and the entry in [square] brackets is the type of the C value(s) to be passed.
916
917 The characters space, tab, colon and comma are ignored in format strings (but
918 not within format units such as ``s#``). This can be used to make long format
919 strings a tad more readable.
920
921 ``s`` (string) [char \*]
922 Convert a null-terminated C string to a Python object. If the C string pointer
923 is *NULL*, ``None`` is used.
924
925 ``s#`` (string) [char \*, int]
926 Convert a C string and its length to a Python object. If the C string pointer
927 is *NULL*, the length is ignored and ``None`` is returned.
928
929 ``z`` (string or ``None``) [char \*]
930 Same as ``s``.
931
932 ``z#`` (string or ``None``) [char \*, int]
933 Same as ``s#``.
934
935 ``u`` (Unicode string) [Py_UNICODE \*]
936 Convert a null-terminated buffer of Unicode (UCS-2 or UCS-4) data to a Python
937 Unicode object. If the Unicode buffer pointer is *NULL*, ``None`` is returned.
938
939 ``u#`` (Unicode string) [Py_UNICODE \*, int]
940 Convert a Unicode (UCS-2 or UCS-4) data buffer and its length to a Python
941 Unicode object. If the Unicode buffer pointer is *NULL*, the length is ignored
942 and ``None`` is returned.
943
944 ``i`` (integer) [int]
945 Convert a plain C :ctype:`int` to a Python integer object.
946
947 ``b`` (integer) [char]
948 Convert a plain C :ctype:`char` to a Python integer object.
949
950 ``h`` (integer) [short int]
951 Convert a plain C :ctype:`short int` to a Python integer object.
952
953 ``l`` (integer) [long int]
954 Convert a C :ctype:`long int` to a Python integer object.
955
956 ``B`` (integer) [unsigned char]
957 Convert a C :ctype:`unsigned char` to a Python integer object.
958
959 ``H`` (integer) [unsigned short int]
960 Convert a C :ctype:`unsigned short int` to a Python integer object.
961
962 ``I`` (integer/long) [unsigned int]
963 Convert a C :ctype:`unsigned int` to a Python integer object or a Python long
964 integer object, if it is larger than ``sys.maxint``.
965
966 ``k`` (integer/long) [unsigned long]
967 Convert a C :ctype:`unsigned long` to a Python integer object or a Python long
968 integer object, if it is larger than ``sys.maxint``.
969
970 ``L`` (long) [PY_LONG_LONG]
971 Convert a C :ctype:`long long` to a Python long integer object. Only available
972 on platforms that support :ctype:`long long`.
973
974 ``K`` (long) [unsigned PY_LONG_LONG]
975 Convert a C :ctype:`unsigned long long` to a Python long integer object. Only
976 available on platforms that support :ctype:`unsigned long long`.
977
978 ``n`` (int) [Py_ssize_t]
979 Convert a C :ctype:`Py_ssize_t` to a Python integer or long integer.
980
981 .. versionadded:: 2.5
982
983 ``c`` (string of length 1) [char]
984 Convert a C :ctype:`int` representing a character to a Python string of length
985 1.
986
987 ``d`` (float) [double]
988 Convert a C :ctype:`double` to a Python floating point number.
989
990 ``f`` (float) [float]
991 Same as ``d``.
992
993 ``D`` (complex) [Py_complex \*]
994 Convert a C :ctype:`Py_complex` structure to a Python complex number.
995
996 ``O`` (object) [PyObject \*]
997 Pass a Python object untouched (except for its reference count, which is
998 incremented by one). If the object passed in is a *NULL* pointer, it is assumed
999 that this was caused because the call producing the argument found an error and
1000 set an exception. Therefore, :cfunc:`Py_BuildValue` will return *NULL* but won't
1001 raise an exception. If no exception has been raised yet, :exc:`SystemError` is
1002 set.
1003
1004 ``S`` (object) [PyObject \*]
1005 Same as ``O``.
1006
1007 ``N`` (object) [PyObject \*]
1008 Same as ``O``, except it doesn't increment the reference count on the object.
1009 Useful when the object is created by a call to an object constructor in the
1010 argument list.
1011
1012 ``O&`` (object) [*converter*, *anything*]
1013 Convert *anything* to a Python object through a *converter* function. The
1014 function is called with *anything* (which should be compatible with :ctype:`void
1015 \*`) as its argument and should return a "new" Python object, or *NULL* if an
1016 error occurred.
1017
1018 ``(items)`` (tuple) [*matching-items*]
1019 Convert a sequence of C values to a Python tuple with the same number of items.
1020
1021 ``[items]`` (list) [*matching-items*]
1022 Convert a sequence of C values to a Python list with the same number of items.
1023
1024 ``{items}`` (dictionary) [*matching-items*]
1025 Convert a sequence of C values to a Python dictionary. Each pair of consecutive
1026 C values adds one item to the dictionary, serving as key and value,
1027 respectively.
1028
1029 If there is an error in the format string, the :exc:`SystemError` exception is
1030 set and *NULL* returned.
1031
1032
1033.. _string-conversion:
1034
1035String conversion and formatting
1036================================
1037
1038Functions for number conversion and formatted string output.
1039
1040
1041.. cfunction:: int PyOS_snprintf(char *str, size_t size, const char *format, ...)
1042
1043 Output not more than *size* bytes to *str* according to the format string
1044 *format* and the extra arguments. See the Unix man page :manpage:`snprintf(2)`.
1045
1046
1047.. cfunction:: int PyOS_vsnprintf(char *str, size_t size, const char *format, va_list va)
1048
1049 Output not more than *size* bytes to *str* according to the format string
1050 *format* and the variable argument list *va*. Unix man page
1051 :manpage:`vsnprintf(2)`.
1052
1053:cfunc:`PyOS_snprintf` and :cfunc:`PyOS_vsnprintf` wrap the Standard C library
1054functions :cfunc:`snprintf` and :cfunc:`vsnprintf`. Their purpose is to
1055guarantee consistent behavior in corner cases, which the Standard C functions do
1056not.
1057
1058The wrappers ensure that *str*[*size*-1] is always ``'\0'`` upon return. They
1059never write more than *size* bytes (including the trailing ``'\0'`` into str.
1060Both functions require that ``str != NULL``, ``size > 0`` and ``format !=
1061NULL``.
1062
1063If the platform doesn't have :cfunc:`vsnprintf` and the buffer size needed to
1064avoid truncation exceeds *size* by more than 512 bytes, Python aborts with a
1065*Py_FatalError*.
1066
1067The return value (*rv*) for these functions should be interpreted as follows:
1068
1069* When ``0 <= rv < size``, the output conversion was successful and *rv*
1070 characters were written to *str* (excluding the trailing ``'\0'`` byte at
1071 *str*[*rv*]).
1072
1073* When ``rv >= size``, the output conversion was truncated and a buffer with
1074 ``rv + 1`` bytes would have been needed to succeed. *str*[*size*-1] is ``'\0'``
1075 in this case.
1076
1077* When ``rv < 0``, "something bad happened." *str*[*size*-1] is ``'\0'`` in
1078 this case too, but the rest of *str* is undefined. The exact cause of the error
1079 depends on the underlying platform.
1080
1081The following functions provide locale-independent string to number conversions.
1082
1083
1084.. cfunction:: double PyOS_ascii_strtod(const char *nptr, char **endptr)
1085
1086 Convert a string to a :ctype:`double`. This function behaves like the Standard C
1087 function :cfunc:`strtod` does in the C locale. It does this without changing the
1088 current locale, since that would not be thread-safe.
1089
1090 :cfunc:`PyOS_ascii_strtod` should typically be used for reading configuration
1091 files or other non-user input that should be locale independent.
1092
1093 .. versionadded:: 2.4
1094
1095 See the Unix man page :manpage:`strtod(2)` for details.
1096
1097
1098.. cfunction:: char * PyOS_ascii_formatd(char *buffer, size_t buf_len, const char *format, double d)
1099
1100 Convert a :ctype:`double` to a string using the ``'.'`` as the decimal
1101 separator. *format* is a :cfunc:`printf`\ -style format string specifying the
1102 number format. Allowed conversion characters are ``'e'``, ``'E'``, ``'f'``,
1103 ``'F'``, ``'g'`` and ``'G'``.
1104
1105 The return value is a pointer to *buffer* with the converted string or NULL if
1106 the conversion failed.
1107
1108 .. versionadded:: 2.4
1109
Christian Heimes0a8143f2007-12-18 23:22:54 +00001110
Georg Brandl8ec7f652007-08-15 14:28:01 +00001111.. cfunction:: double PyOS_ascii_atof(const char *nptr)
1112
1113 Convert a string to a :ctype:`double` in a locale-independent way.
1114
1115 .. versionadded:: 2.4
1116
1117 See the Unix man page :manpage:`atof(2)` for details.
1118
Christian Heimes0a8143f2007-12-18 23:22:54 +00001119
1120.. cfunction:: char * PyOS_stricmp(char *s1, char *s2)
1121
1122 Case insensitive comparsion of strings. The functions works almost
1123 identical to :cfunc:`strcmp` except that it ignores the case.
1124
1125 .. versionadded:: 2.6
1126
1127
1128.. cfunction:: char * PyOS_strnicmp(char *s1, char *s2, Py_ssize_t size)
1129
1130 Case insensitive comparsion of strings. The functions works almost
1131 identical to :cfunc:`strncmp` except that it ignores the case.
1132
1133 .. versionadded:: 2.6
1134
Georg Brandl16f1df92007-12-01 22:24:47 +00001135
1136.. _reflection:
1137
1138Reflection
1139==========
1140
1141.. cfunction:: PyObject* PyEval_GetBuiltins()
1142
1143 Return a dictionary of the builtins in the current execution frame,
1144 or the interpreter of the thread state if no frame is currently executing.
1145
1146
1147.. cfunction:: PyObject* PyEval_GetLocals()
1148
1149 Return a dictionary of the local variables in the current execution frame,
1150 or *NULL* if no frame is currently executing.
1151
1152
1153.. cfunction:: PyObject* PyEval_GetGlobals()
1154
1155 Return a dictionary of the global variables in the current execution frame,
1156 or *NULL* if no frame is currently executing.
1157
1158
1159.. cfunction:: PyFrameObject* PyEval_GetFrame()
1160
1161 Return the current thread state's frame, which is *NULL* if no frame is
1162 currently executing.
1163
1164
1165.. cfunction:: int PyEval_GetRestricted()
1166
1167 If there is a current frame and it is executing in restricted mode, return true,
1168 otherwise false.
1169
1170
1171.. cfunction:: const char* PyEval_GetFuncName(PyObject *func)
1172
1173 Return the name of *func* if it is a function, class or instance object, else the
1174 name of *func*\s type.
1175
1176
1177.. cfunction:: const char* PyEval_GetFuncDesc(PyObject *func)
1178
1179 Return a description string, depending on the type of *func*.
1180 Return values include "()" for functions and methods, " constructor",
1181 " instance", and " object". Concatenated with the result of
1182 :cfunc:`PyEval_GetFuncName`, the result will be a description of
1183 *func*.