blob: b9eb390bda56992038e0f199a0bf8ff02d3f63a2 [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +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
Christian Heimescbf3b5c2007-12-03 21:02:03 +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 Brandl116aa622007-08-15 14:28:22 +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)
Georg Brandl321976b2007-09-01 12:33:24 +0000184 single: modules (in module sys)
Georg Brandl116aa622007-08-15 14:28:22 +0000185
186 This is a simplified interface to :cfunc:`PyImport_ImportModuleEx` below,
Christian Heimes072c0f12008-01-03 23:01:04 +0000187 leaving the *globals* and *locals* arguments set to *NULL* and *level* set
188 to 0. When the *name*
Georg Brandl116aa622007-08-15 14:28:22 +0000189 argument contains a dot (when it specifies a submodule of a package), the
190 *fromlist* argument is set to the list ``['*']`` so that the return value is the
191 named module rather than the top-level package containing it as would otherwise
192 be the case. (Unfortunately, this has an additional side effect when *name* in
193 fact specifies a subpackage instead of a submodule: the submodules specified in
194 the package's ``__all__`` variable are loaded.) Return a new reference to the
195 imported module, or *NULL* with an exception set on failure. Before Python 2.4,
196 the module may still be created in the failure case --- examine ``sys.modules``
197 to find out. Starting with Python 2.4, a failing import of a module no longer
198 leaves the module in ``sys.modules``.
199
Christian Heimes072c0f12008-01-03 23:01:04 +0000200 .. versionchanged:: 2.6
201 always use absolute imports
202
203 .. index:: single: modules (in module sys)
204
205
206.. cfunction:: PyObject* PyImport_ImportModuleNoBlock(const char *name)
207
208 .. index::
209 single: `cfunc:PyImport_ImportModule`
210
211 This version of `cfunc:PyImport_ImportModule` does not block. It's intended
212 to be used in C function which import other modules to execute a function.
213 The import may block if another thread holds the import lock. The function
214 `cfunc:PyImport_ImportModuleNoBlock` doesn't block. It first tries to fetch
215 the module from sys.modules and falls back to `cfunc:PyImport_ImportModule`
216 unless the the lock is hold. In the latter case the function raises an
217 ImportError.
218
219 .. versionadded:: 2.6
220
Georg Brandl116aa622007-08-15 14:28:22 +0000221
222.. cfunction:: PyObject* PyImport_ImportModuleEx(char *name, PyObject *globals, PyObject *locals, PyObject *fromlist)
223
224 .. index:: builtin: __import__
225
226 Import a module. This is best described by referring to the built-in Python
227 function :func:`__import__`, as the standard :func:`__import__` function calls
228 this function directly.
229
230 The return value is a new reference to the imported module or top-level package,
231 or *NULL* with an exception set on failure (before Python 2.4, the module may
232 still be created in this case). Like for :func:`__import__`, the return value
233 when a submodule of a package was requested is normally the top-level package,
234 unless a non-empty *fromlist* was given.
235
Georg Brandl321976b2007-09-01 12:33:24 +0000236 Failing imports remove incomplete module objects, like with
237 :cfunc:`PyImport_ImportModule`.
Georg Brandl116aa622007-08-15 14:28:22 +0000238
Christian Heimes072c0f12008-01-03 23:01:04 +0000239 .. versionchanged:: 2.6
240 The function is an alias for `cfunc:PyImport_ImportModuleLevel` with
241 -1 as level, meaning relative import.
242
243
244.. cfunction:: PyObject* PyImport_ImportModuleLevel(char *name, PyObject *globals, PyObject *locals, PyObject *fromlist, int level)
245
246 Import a module. This is best described by referring to the built-in Python
247 function :func:`__import__`, as the standard :func:`__import__` function calls
248 this function directly.
249
250 The return value is a new reference to the imported module or top-level package,
251 or *NULL* with an exception set on failure. Like for :func:`__import__`,
252 the return value when a submodule of a package was requested is normally the
253 top-level package, unless a non-empty *fromlist* was given.
254
255 ..versionadded:: 2.5
256
Georg Brandl116aa622007-08-15 14:28:22 +0000257
258.. cfunction:: PyObject* PyImport_Import(PyObject *name)
259
Georg Brandl116aa622007-08-15 14:28:22 +0000260 This is a higher-level interface that calls the current "import hook function".
261 It invokes the :func:`__import__` function from the ``__builtins__`` of the
262 current globals. This means that the import is done using whatever import hooks
Georg Brandl321976b2007-09-01 12:33:24 +0000263 are installed in the current environment.
Georg Brandl116aa622007-08-15 14:28:22 +0000264
Christian Heimes072c0f12008-01-03 23:01:04 +0000265 .. versionchanged:: 2.6
266 always use absolute imports
267
Georg Brandl116aa622007-08-15 14:28:22 +0000268
269.. cfunction:: PyObject* PyImport_ReloadModule(PyObject *m)
270
271 Reload a module. Return a new reference to the reloaded module, or *NULL* with
272 an exception set on failure (the module still exists in this case).
273
274
275.. cfunction:: PyObject* PyImport_AddModule(const char *name)
276
277 Return the module object corresponding to a module name. The *name* argument
278 may be of the form ``package.module``. First check the modules dictionary if
279 there's one there, and if not, create a new one and insert it in the modules
280 dictionary. Return *NULL* with an exception set on failure.
281
282 .. note::
283
284 This function does not load or import the module; if the module wasn't already
285 loaded, you will get an empty module object. Use :cfunc:`PyImport_ImportModule`
286 or one of its variants to import a module. Package structures implied by a
287 dotted name for *name* are not created if not already present.
288
289
290.. cfunction:: PyObject* PyImport_ExecCodeModule(char *name, PyObject *co)
291
292 .. index:: builtin: compile
293
294 Given a module name (possibly of the form ``package.module``) and a code object
295 read from a Python bytecode file or obtained from the built-in function
296 :func:`compile`, load the module. Return a new reference to the module object,
297 or *NULL* with an exception set if an error occurred. Before Python 2.4, the
298 module could still be created in error cases. Starting with Python 2.4, *name*
299 is removed from ``sys.modules`` in error cases, and even if *name* was already
300 in ``sys.modules`` on entry to :cfunc:`PyImport_ExecCodeModule`. Leaving
301 incompletely initialized modules in ``sys.modules`` is dangerous, as imports of
302 such modules have no way to know that the module object is an unknown (and
303 probably damaged with respect to the module author's intents) state.
304
305 This function will reload the module if it was already imported. See
306 :cfunc:`PyImport_ReloadModule` for the intended way to reload a module.
307
308 If *name* points to a dotted name of the form ``package.module``, any package
309 structures not already created will still not be created.
310
Georg Brandl116aa622007-08-15 14:28:22 +0000311
312.. cfunction:: long PyImport_GetMagicNumber()
313
314 Return the magic number for Python bytecode files (a.k.a. :file:`.pyc` and
315 :file:`.pyo` files). The magic number should be present in the first four bytes
316 of the bytecode file, in little-endian byte order.
317
318
319.. cfunction:: PyObject* PyImport_GetModuleDict()
320
321 Return the dictionary used for the module administration (a.k.a.
322 ``sys.modules``). Note that this is a per-interpreter variable.
323
324
325.. cfunction:: void _PyImport_Init()
326
327 Initialize the import mechanism. For internal use only.
328
329
330.. cfunction:: void PyImport_Cleanup()
331
332 Empty the module table. For internal use only.
333
334
335.. cfunction:: void _PyImport_Fini()
336
337 Finalize the import mechanism. For internal use only.
338
339
340.. cfunction:: PyObject* _PyImport_FindExtension(char *, char *)
341
342 For internal use only.
343
344
345.. cfunction:: PyObject* _PyImport_FixupExtension(char *, char *)
346
347 For internal use only.
348
349
350.. cfunction:: int PyImport_ImportFrozenModule(char *name)
351
352 Load a frozen module named *name*. Return ``1`` for success, ``0`` if the
353 module is not found, and ``-1`` with an exception set if the initialization
354 failed. To access the imported module on a successful load, use
355 :cfunc:`PyImport_ImportModule`. (Note the misnomer --- this function would
356 reload the module if it was already imported.)
357
358
359.. ctype:: struct _frozen
360
361 .. index:: single: freeze utility
362
363 This is the structure type definition for frozen module descriptors, as
364 generated by the :program:`freeze` utility (see :file:`Tools/freeze/` in the
365 Python source distribution). Its definition, found in :file:`Include/import.h`,
366 is::
367
368 struct _frozen {
369 char *name;
370 unsigned char *code;
371 int size;
372 };
373
374
375.. cvar:: struct _frozen* PyImport_FrozenModules
376
377 This pointer is initialized to point to an array of :ctype:`struct _frozen`
378 records, terminated by one whose members are all *NULL* or zero. When a frozen
379 module is imported, it is searched in this table. Third-party code could play
380 tricks with this to provide a dynamically created collection of frozen modules.
381
382
383.. cfunction:: int PyImport_AppendInittab(char *name, void (*initfunc)(void))
384
385 Add a single module to the existing table of built-in modules. This is a
386 convenience wrapper around :cfunc:`PyImport_ExtendInittab`, returning ``-1`` if
387 the table could not be extended. The new module can be imported by the name
388 *name*, and uses the function *initfunc* as the initialization function called
389 on the first attempted import. This should be called before
390 :cfunc:`Py_Initialize`.
391
392
393.. ctype:: struct _inittab
394
395 Structure describing a single entry in the list of built-in modules. Each of
396 these structures gives the name and initialization function for a module built
397 into the interpreter. Programs which embed Python may use an array of these
398 structures in conjunction with :cfunc:`PyImport_ExtendInittab` to provide
399 additional built-in modules. The structure is defined in
400 :file:`Include/import.h` as::
401
402 struct _inittab {
403 char *name;
404 void (*initfunc)(void);
405 };
406
407
408.. cfunction:: int PyImport_ExtendInittab(struct _inittab *newtab)
409
410 Add a collection of modules to the table of built-in modules. The *newtab*
411 array must end with a sentinel entry which contains *NULL* for the :attr:`name`
412 field; failure to provide the sentinel value can result in a memory fault.
413 Returns ``0`` on success or ``-1`` if insufficient memory could be allocated to
414 extend the internal table. In the event of failure, no modules are added to the
415 internal table. This should be called before :cfunc:`Py_Initialize`.
416
417
418.. _marshalling-utils:
419
420Data marshalling support
421========================
422
423These routines allow C code to work with serialized objects using the same data
424format as the :mod:`marshal` module. There are functions to write data into the
425serialization format, and additional functions that can be used to read the data
426back. Files used to store marshalled data must be opened in binary mode.
427
428Numeric values are stored with the least significant byte first.
429
430The module supports two versions of the data format: version 0 is the historical
431version, version 1 (new in Python 2.4) shares interned strings in the file, and
432upon unmarshalling. *Py_MARSHAL_VERSION* indicates the current file format
433(currently 1).
434
435
436.. cfunction:: void PyMarshal_WriteLongToFile(long value, FILE *file, int version)
437
438 Marshal a :ctype:`long` integer, *value*, to *file*. This will only write the
439 least-significant 32 bits of *value*; regardless of the size of the native
Georg Brandl321976b2007-09-01 12:33:24 +0000440 :ctype:`long` type. *version* indicates the file format.
Georg Brandl116aa622007-08-15 14:28:22 +0000441
442
443.. cfunction:: void PyMarshal_WriteObjectToFile(PyObject *value, FILE *file, int version)
444
445 Marshal a Python object, *value*, to *file*.
Georg Brandl321976b2007-09-01 12:33:24 +0000446 *version* indicates the file format.
Georg Brandl116aa622007-08-15 14:28:22 +0000447
448
449.. cfunction:: PyObject* PyMarshal_WriteObjectToString(PyObject *value, int version)
450
451 Return a string object containing the marshalled representation of *value*.
Georg Brandl321976b2007-09-01 12:33:24 +0000452 *version* indicates the file format.
Georg Brandl116aa622007-08-15 14:28:22 +0000453
454
455The following functions allow marshalled values to be read back in.
456
457XXX What about error detection? It appears that reading past the end of the
458file will always result in a negative numeric value (where that's relevant), but
459it's not clear that negative values won't be handled properly when there's no
460error. What's the right way to tell? Should only non-negative values be written
461using these routines?
462
463
464.. cfunction:: long PyMarshal_ReadLongFromFile(FILE *file)
465
466 Return a C :ctype:`long` from the data stream in a :ctype:`FILE\*` opened for
467 reading. Only a 32-bit value can be read in using this function, regardless of
468 the native size of :ctype:`long`.
469
470
471.. cfunction:: int PyMarshal_ReadShortFromFile(FILE *file)
472
473 Return a C :ctype:`short` from the data stream in a :ctype:`FILE\*` opened for
474 reading. Only a 16-bit value can be read in using this function, regardless of
475 the native size of :ctype:`short`.
476
477
478.. cfunction:: PyObject* PyMarshal_ReadObjectFromFile(FILE *file)
479
480 Return a Python object from the data stream in a :ctype:`FILE\*` opened for
481 reading. On error, sets the appropriate exception (:exc:`EOFError` or
482 :exc:`TypeError`) and returns *NULL*.
483
484
485.. cfunction:: PyObject* PyMarshal_ReadLastObjectFromFile(FILE *file)
486
487 Return a Python object from the data stream in a :ctype:`FILE\*` opened for
488 reading. Unlike :cfunc:`PyMarshal_ReadObjectFromFile`, this function assumes
489 that no further objects will be read from the file, allowing it to aggressively
490 load file data into memory so that the de-serialization can operate from data in
491 memory rather than reading a byte at a time from the file. Only use these
492 variant if you are certain that you won't be reading anything else from the
493 file. On error, sets the appropriate exception (:exc:`EOFError` or
494 :exc:`TypeError`) and returns *NULL*.
495
496
497.. cfunction:: PyObject* PyMarshal_ReadObjectFromString(char *string, Py_ssize_t len)
498
499 Return a Python object from the data stream in a character buffer containing
500 *len* bytes pointed to by *string*. On error, sets the appropriate exception
501 (:exc:`EOFError` or :exc:`TypeError`) and returns *NULL*.
502
503
504.. _arg-parsing:
505
506Parsing arguments and building values
507=====================================
508
509These functions are useful when creating your own extensions functions and
510methods. Additional information and examples are available in
511:ref:`extending-index`.
512
513The first three of these functions described, :cfunc:`PyArg_ParseTuple`,
514:cfunc:`PyArg_ParseTupleAndKeywords`, and :cfunc:`PyArg_Parse`, all use *format
515strings* which are used to tell the function about the expected arguments. The
516format strings use the same syntax for each of these functions.
517
518A format string consists of zero or more "format units." A format unit
519describes one Python object; it is usually a single character or a parenthesized
520sequence of format units. With a few exceptions, a format unit that is not a
521parenthesized sequence normally corresponds to a single address argument to
522these functions. In the following description, the quoted form is the format
523unit; the entry in (round) parentheses is the Python object type that matches
524the format unit; and the entry in [square] brackets is the type of the C
525variable(s) whose address should be passed.
526
527``s`` (string or Unicode object) [const char \*]
528 Convert a Python string or Unicode object to a C pointer to a character string.
529 You must not provide storage for the string itself; a pointer to an existing
530 string is stored into the character pointer variable whose address you pass.
531 The C string is NUL-terminated. The Python string must not contain embedded NUL
532 bytes; if it does, a :exc:`TypeError` exception is raised. Unicode objects are
533 converted to C strings using the default encoding. If this conversion fails, a
534 :exc:`UnicodeError` is raised.
535
536``s#`` (string, Unicode or any read buffer compatible object) [const char \*, int]
537 This variant on ``s`` stores into two C variables, the first one a pointer to a
538 character string, the second one its length. In this case the Python string may
539 contain embedded null bytes. Unicode objects pass back a pointer to the default
540 encoded string version of the object if such a conversion is possible. All
541 other read-buffer compatible objects pass back a reference to the raw internal
542 data representation.
543
544``y`` (bytes object) [const char \*]
545 This variant on ``s`` convert a Python bytes object to a C pointer to a
546 character string. The bytes object must not contain embedded NUL bytes; if it
547 does, a :exc:`TypeError` exception is raised.
548
549``y#`` (bytes object) [const char \*, int]
550 This variant on ``s#`` stores into two C variables, the first one a pointer to a
551 character string, the second one its length. This only accepts bytes objects.
552
553``z`` (string or ``None``) [const char \*]
554 Like ``s``, but the Python object may also be ``None``, in which case the C
555 pointer is set to *NULL*.
556
557``z#`` (string or ``None`` or any read buffer compatible object) [const char \*, int]
558 This is to ``s#`` as ``z`` is to ``s``.
559
560``u`` (Unicode object) [Py_UNICODE \*]
561 Convert a Python Unicode object to a C pointer to a NUL-terminated buffer of
562 16-bit Unicode (UTF-16) data. As with ``s``, there is no need to provide
563 storage for the Unicode data buffer; a pointer to the existing Unicode data is
564 stored into the :ctype:`Py_UNICODE` pointer variable whose address you pass.
565
566``u#`` (Unicode object) [Py_UNICODE \*, int]
567 This variant on ``u`` stores into two C variables, the first one a pointer to a
568 Unicode data buffer, the second one its length. Non-Unicode objects are handled
569 by interpreting their read-buffer pointer as pointer to a :ctype:`Py_UNICODE`
570 array.
571
Guido van Rossumfb67be22007-08-29 18:38:11 +0000572``Z`` (Unicode or ``None``) [Py_UNICODE \*]
573 Like ``s``, but the Python object may also be ``None``, in which case the C
574 pointer is set to *NULL*.
575
576``Z#`` (Unicode or ``None``) [Py_UNICODE \*, int]
577 This is to ``u#`` as ``Z`` is to ``u``.
578
Georg Brandl116aa622007-08-15 14:28:22 +0000579``es`` (string, Unicode object or character buffer compatible object) [const char \*encoding, char \*\*buffer]
580 This variant on ``s`` is used for encoding Unicode and objects convertible to
581 Unicode into a character buffer. It only works for encoded data without embedded
582 NUL bytes.
583
584 This format requires two arguments. The first is only used as input, and
585 must be a :ctype:`const char\*` which points to the name of an encoding as a
586 NUL-terminated string, or *NULL*, in which case the default encoding is used.
587 An exception is raised if the named encoding is not known to Python. The
588 second argument must be a :ctype:`char\*\*`; the value of the pointer it
589 references will be set to a buffer with the contents of the argument text.
590 The text will be encoded in the encoding specified by the first argument.
591
592 :cfunc:`PyArg_ParseTuple` will allocate a buffer of the needed size, copy the
593 encoded data into this buffer and adjust *\*buffer* to reference the newly
594 allocated storage. The caller is responsible for calling :cfunc:`PyMem_Free` to
595 free the allocated buffer after use.
596
597``et`` (string, Unicode object or character buffer compatible object) [const char \*encoding, char \*\*buffer]
598 Same as ``es`` except that 8-bit string objects are passed through without
599 recoding them. Instead, the implementation assumes that the string object uses
600 the encoding passed in as parameter.
601
602``es#`` (string, Unicode object or character buffer compatible object) [const char \*encoding, char \*\*buffer, int \*buffer_length]
603 This variant on ``s#`` is used for encoding Unicode and objects convertible to
604 Unicode into a character buffer. Unlike the ``es`` format, this variant allows
605 input data which contains NUL characters.
606
607 It requires three arguments. The first is only used as input, and must be a
608 :ctype:`const char\*` which points to the name of an encoding as a
609 NUL-terminated string, or *NULL*, in which case the default encoding is used.
610 An exception is raised if the named encoding is not known to Python. The
611 second argument must be a :ctype:`char\*\*`; the value of the pointer it
612 references will be set to a buffer with the contents of the argument text.
613 The text will be encoded in the encoding specified by the first argument.
614 The third argument must be a pointer to an integer; the referenced integer
615 will be set to the number of bytes in the output buffer.
616
617 There are two modes of operation:
618
619 If *\*buffer* points a *NULL* pointer, the function will allocate a buffer of
620 the needed size, copy the encoded data into this buffer and set *\*buffer* to
621 reference the newly allocated storage. The caller is responsible for calling
622 :cfunc:`PyMem_Free` to free the allocated buffer after usage.
623
624 If *\*buffer* points to a non-*NULL* pointer (an already allocated buffer),
625 :cfunc:`PyArg_ParseTuple` will use this location as the buffer and interpret the
626 initial value of *\*buffer_length* as the buffer size. It will then copy the
627 encoded data into the buffer and NUL-terminate it. If the buffer is not large
628 enough, a :exc:`ValueError` will be set.
629
630 In both cases, *\*buffer_length* is set to the length of the encoded data
631 without the trailing NUL byte.
632
633``et#`` (string, Unicode object or character buffer compatible object) [const char \*encoding, char \*\*buffer]
634 Same as ``es#`` except that string objects are passed through without recoding
635 them. Instead, the implementation assumes that the string object uses the
636 encoding passed in as parameter.
637
638``b`` (integer) [char]
639 Convert a Python integer to a tiny int, stored in a C :ctype:`char`.
640
641``B`` (integer) [unsigned char]
642 Convert a Python integer to a tiny int without overflow checking, stored in a C
643 :ctype:`unsigned char`.
644
Georg Brandl116aa622007-08-15 14:28:22 +0000645``h`` (integer) [short int]
646 Convert a Python integer to a C :ctype:`short int`.
647
648``H`` (integer) [unsigned short int]
649 Convert a Python integer to a C :ctype:`unsigned short int`, without overflow
650 checking.
651
Georg Brandl116aa622007-08-15 14:28:22 +0000652``i`` (integer) [int]
653 Convert a Python integer to a plain C :ctype:`int`.
654
655``I`` (integer) [unsigned int]
656 Convert a Python integer to a C :ctype:`unsigned int`, without overflow
657 checking.
658
Georg Brandl116aa622007-08-15 14:28:22 +0000659``l`` (integer) [long int]
660 Convert a Python integer to a C :ctype:`long int`.
661
662``k`` (integer) [unsigned long]
Georg Brandlaacc0892007-12-02 23:11:00 +0000663 Convert a Python integer to a C :ctype:`unsigned long` without
Georg Brandl116aa622007-08-15 14:28:22 +0000664 overflow checking.
665
Georg Brandl116aa622007-08-15 14:28:22 +0000666``L`` (integer) [PY_LONG_LONG]
667 Convert a Python integer to a C :ctype:`long long`. This format is only
668 available on platforms that support :ctype:`long long` (or :ctype:`_int64` on
669 Windows).
670
671``K`` (integer) [unsigned PY_LONG_LONG]
Georg Brandlaacc0892007-12-02 23:11:00 +0000672 Convert a Python integer to a C :ctype:`unsigned long long`
Georg Brandl116aa622007-08-15 14:28:22 +0000673 without overflow checking. This format is only available on platforms that
674 support :ctype:`unsigned long long` (or :ctype:`unsigned _int64` on Windows).
675
Georg Brandl116aa622007-08-15 14:28:22 +0000676``n`` (integer) [Py_ssize_t]
Georg Brandlaacc0892007-12-02 23:11:00 +0000677 Convert a Python integer to a C :ctype:`Py_ssize_t`.
Georg Brandl116aa622007-08-15 14:28:22 +0000678
Georg Brandl116aa622007-08-15 14:28:22 +0000679``c`` (string of length 1) [char]
680 Convert a Python character, represented as a string of length 1, to a C
681 :ctype:`char`.
682
683``f`` (float) [float]
684 Convert a Python floating point number to a C :ctype:`float`.
685
686``d`` (float) [double]
687 Convert a Python floating point number to a C :ctype:`double`.
688
689``D`` (complex) [Py_complex]
690 Convert a Python complex number to a C :ctype:`Py_complex` structure.
691
692``O`` (object) [PyObject \*]
693 Store a Python object (without any conversion) in a C object pointer. The C
694 program thus receives the actual object that was passed. The object's reference
695 count is not increased. The pointer stored is not *NULL*.
696
697``O!`` (object) [*typeobject*, PyObject \*]
698 Store a Python object in a C object pointer. This is similar to ``O``, but
699 takes two C arguments: the first is the address of a Python type object, the
700 second is the address of the C variable (of type :ctype:`PyObject\*`) into which
701 the object pointer is stored. If the Python object does not have the required
702 type, :exc:`TypeError` is raised.
703
704``O&`` (object) [*converter*, *anything*]
705 Convert a Python object to a C variable through a *converter* function. This
706 takes two arguments: the first is a function, the second is the address of a C
707 variable (of arbitrary type), converted to :ctype:`void \*`. The *converter*
708 function in turn is called as follows::
709
710 status = converter(object, address);
711
712 where *object* is the Python object to be converted and *address* is the
713 :ctype:`void\*` argument that was passed to the :cfunc:`PyArg_Parse\*` function.
714 The returned *status* should be ``1`` for a successful conversion and ``0`` if
715 the conversion has failed. When the conversion fails, the *converter* function
716 should raise an exception.
717
718``S`` (string) [PyStringObject \*]
719 Like ``O`` but requires that the Python object is a string object. Raises
720 :exc:`TypeError` if the object is not a string object. The C variable may also
721 be declared as :ctype:`PyObject\*`.
722
723``U`` (Unicode string) [PyUnicodeObject \*]
724 Like ``O`` but requires that the Python object is a Unicode object. Raises
725 :exc:`TypeError` if the object is not a Unicode object. The C variable may also
726 be declared as :ctype:`PyObject\*`.
727
728``t#`` (read-only character buffer) [char \*, int]
729 Like ``s#``, but accepts any object which implements the read-only buffer
730 interface. The :ctype:`char\*` variable is set to point to the first byte of
731 the buffer, and the :ctype:`int` is set to the length of the buffer. Only
732 single-segment buffer objects are accepted; :exc:`TypeError` is raised for all
733 others.
734
735``w`` (read-write character buffer) [char \*]
736 Similar to ``s``, but accepts any object which implements the read-write buffer
737 interface. The caller must determine the length of the buffer by other means,
738 or use ``w#`` instead. Only single-segment buffer objects are accepted;
739 :exc:`TypeError` is raised for all others.
740
741``w#`` (read-write character buffer) [char \*, int]
742 Like ``s#``, but accepts any object which implements the read-write buffer
743 interface. The :ctype:`char \*` variable is set to point to the first byte of
744 the buffer, and the :ctype:`int` is set to the length of the buffer. Only
745 single-segment buffer objects are accepted; :exc:`TypeError` is raised for all
746 others.
747
748``(items)`` (tuple) [*matching-items*]
749 The object must be a Python sequence whose length is the number of format units
750 in *items*. The C arguments must correspond to the individual format units in
751 *items*. Format units for sequences may be nested.
752
Georg Brandlaacc0892007-12-02 23:11:00 +0000753It is possible to pass "long" integers (integers whose value exceeds the
754platform's :const:`LONG_MAX`) however no proper range checking is done --- the
755most significant bits are silently truncated when the receiving field is too
756small to receive the value (actually, the semantics are inherited from downcasts
757in C --- your mileage may vary).
Georg Brandl116aa622007-08-15 14:28:22 +0000758
759A few other characters have a meaning in a format string. These may not occur
760inside nested parentheses. They are:
761
762``|``
763 Indicates that the remaining arguments in the Python argument list are optional.
764 The C variables corresponding to optional arguments should be initialized to
765 their default value --- when an optional argument is not specified,
766 :cfunc:`PyArg_ParseTuple` does not touch the contents of the corresponding C
767 variable(s).
768
769``:``
770 The list of format units ends here; the string after the colon is used as the
771 function name in error messages (the "associated value" of the exception that
772 :cfunc:`PyArg_ParseTuple` raises).
773
774``;``
775 The list of format units ends here; the string after the semicolon is used as
776 the error message *instead* of the default error message. Clearly, ``:`` and
777 ``;`` mutually exclude each other.
778
779Note that any Python object references which are provided to the caller are
780*borrowed* references; do not decrement their reference count!
781
782Additional arguments passed to these functions must be addresses of variables
783whose type is determined by the format string; these are used to store values
784from the input tuple. There are a few cases, as described in the list of format
785units above, where these parameters are used as input values; they should match
786what is specified for the corresponding format unit in that case.
787
788For the conversion to succeed, the *arg* object must match the format and the
789format must be exhausted. On success, the :cfunc:`PyArg_Parse\*` functions
790return true, otherwise they return false and raise an appropriate exception.
791
792
793.. cfunction:: int PyArg_ParseTuple(PyObject *args, const char *format, ...)
794
795 Parse the parameters of a function that takes only positional parameters into
796 local variables. Returns true on success; on failure, it returns false and
797 raises the appropriate exception.
798
799
800.. cfunction:: int PyArg_VaParse(PyObject *args, const char *format, va_list vargs)
801
802 Identical to :cfunc:`PyArg_ParseTuple`, except that it accepts a va_list rather
803 than a variable number of arguments.
804
805
806.. cfunction:: int PyArg_ParseTupleAndKeywords(PyObject *args, PyObject *kw, const char *format, char *keywords[], ...)
807
808 Parse the parameters of a function that takes both positional and keyword
809 parameters into local variables. Returns true on success; on failure, it
810 returns false and raises the appropriate exception.
811
812
813.. cfunction:: int PyArg_VaParseTupleAndKeywords(PyObject *args, PyObject *kw, const char *format, char *keywords[], va_list vargs)
814
815 Identical to :cfunc:`PyArg_ParseTupleAndKeywords`, except that it accepts a
816 va_list rather than a variable number of arguments.
817
818
Georg Brandl85eb8c12007-08-31 16:33:38 +0000819.. XXX deprecated, will be removed
Georg Brandl116aa622007-08-15 14:28:22 +0000820.. cfunction:: int PyArg_Parse(PyObject *args, const char *format, ...)
821
822 Function used to deconstruct the argument lists of "old-style" functions ---
823 these are functions which use the :const:`METH_OLDARGS` parameter parsing
824 method. This is not recommended for use in parameter parsing in new code, and
825 most code in the standard interpreter has been modified to no longer use this
826 for that purpose. It does remain a convenient way to decompose other tuples,
827 however, and may continue to be used for that purpose.
828
829
830.. cfunction:: int PyArg_UnpackTuple(PyObject *args, const char *name, Py_ssize_t min, Py_ssize_t max, ...)
831
832 A simpler form of parameter retrieval which does not use a format string to
833 specify the types of the arguments. Functions which use this method to retrieve
834 their parameters should be declared as :const:`METH_VARARGS` in function or
835 method tables. The tuple containing the actual parameters should be passed as
836 *args*; it must actually be a tuple. The length of the tuple must be at least
837 *min* and no more than *max*; *min* and *max* may be equal. Additional
838 arguments must be passed to the function, each of which should be a pointer to a
839 :ctype:`PyObject\*` variable; these will be filled in with the values from
840 *args*; they will contain borrowed references. The variables which correspond
841 to optional parameters not given by *args* will not be filled in; these should
842 be initialized by the caller. This function returns true on success and false if
843 *args* is not a tuple or contains the wrong number of elements; an exception
844 will be set if there was a failure.
845
846 This is an example of the use of this function, taken from the sources for the
847 :mod:`_weakref` helper module for weak references::
848
849 static PyObject *
850 weakref_ref(PyObject *self, PyObject *args)
851 {
852 PyObject *object;
853 PyObject *callback = NULL;
854 PyObject *result = NULL;
855
856 if (PyArg_UnpackTuple(args, "ref", 1, 2, &object, &callback)) {
857 result = PyWeakref_NewRef(object, callback);
858 }
859 return result;
860 }
861
862 The call to :cfunc:`PyArg_UnpackTuple` in this example is entirely equivalent to
863 this call to :cfunc:`PyArg_ParseTuple`::
864
865 PyArg_ParseTuple(args, "O|O:ref", &object, &callback)
866
Georg Brandl116aa622007-08-15 14:28:22 +0000867
868.. cfunction:: PyObject* Py_BuildValue(const char *format, ...)
869
870 Create a new value based on a format string similar to those accepted by the
871 :cfunc:`PyArg_Parse\*` family of functions and a sequence of values. Returns
872 the value or *NULL* in the case of an error; an exception will be raised if
873 *NULL* is returned.
874
875 :cfunc:`Py_BuildValue` does not always build a tuple. It builds a tuple only if
876 its format string contains two or more format units. If the format string is
877 empty, it returns ``None``; if it contains exactly one format unit, it returns
878 whatever object is described by that format unit. To force it to return a tuple
879 of size 0 or one, parenthesize the format string.
880
881 When memory buffers are passed as parameters to supply data to build objects, as
882 for the ``s`` and ``s#`` formats, the required data is copied. Buffers provided
883 by the caller are never referenced by the objects created by
884 :cfunc:`Py_BuildValue`. In other words, if your code invokes :cfunc:`malloc`
885 and passes the allocated memory to :cfunc:`Py_BuildValue`, your code is
886 responsible for calling :cfunc:`free` for that memory once
887 :cfunc:`Py_BuildValue` returns.
888
889 In the following description, the quoted form is the format unit; the entry in
890 (round) parentheses is the Python object type that the format unit will return;
891 and the entry in [square] brackets is the type of the C value(s) to be passed.
892
893 The characters space, tab, colon and comma are ignored in format strings (but
894 not within format units such as ``s#``). This can be used to make long format
895 strings a tad more readable.
896
897 ``s`` (string) [char \*]
898 Convert a null-terminated C string to a Python object. If the C string pointer
899 is *NULL*, ``None`` is used.
900
901 ``s#`` (string) [char \*, int]
902 Convert a C string and its length to a Python object. If the C string pointer
903 is *NULL*, the length is ignored and ``None`` is returned.
904
905 ``z`` (string or ``None``) [char \*]
906 Same as ``s``.
907
908 ``z#`` (string or ``None``) [char \*, int]
909 Same as ``s#``.
910
911 ``u`` (Unicode string) [Py_UNICODE \*]
912 Convert a null-terminated buffer of Unicode (UCS-2 or UCS-4) data to a Python
913 Unicode object. If the Unicode buffer pointer is *NULL*, ``None`` is returned.
914
915 ``u#`` (Unicode string) [Py_UNICODE \*, int]
916 Convert a Unicode (UCS-2 or UCS-4) data buffer and its length to a Python
917 Unicode object. If the Unicode buffer pointer is *NULL*, the length is ignored
918 and ``None`` is returned.
919
920 ``U`` (string) [char \*]
921 Convert a null-terminated C string to a Python unicode object. If the C string
922 pointer is *NULL*, ``None`` is used.
923
924 ``U#`` (string) [char \*, int]
925 Convert a C string and its length to a Python unicode object. If the C string
926 pointer is *NULL*, the length is ignored and ``None`` is returned.
927
928 ``i`` (integer) [int]
929 Convert a plain C :ctype:`int` to a Python integer object.
930
931 ``b`` (integer) [char]
932 Convert a plain C :ctype:`char` to a Python integer object.
933
934 ``h`` (integer) [short int]
935 Convert a plain C :ctype:`short int` to a Python integer object.
936
937 ``l`` (integer) [long int]
938 Convert a C :ctype:`long int` to a Python integer object.
939
940 ``B`` (integer) [unsigned char]
941 Convert a C :ctype:`unsigned char` to a Python integer object.
942
943 ``H`` (integer) [unsigned short int]
944 Convert a C :ctype:`unsigned short int` to a Python integer object.
945
946 ``I`` (integer/long) [unsigned int]
Martin v. Löwis327858e2007-12-04 22:18:27 +0000947 Convert a C :ctype:`unsigned int` to a Python long integer object.
Georg Brandl116aa622007-08-15 14:28:22 +0000948
949 ``k`` (integer/long) [unsigned long]
Martin v. Löwis327858e2007-12-04 22:18:27 +0000950 Convert a C :ctype:`unsigned long` to a Python long integer object.
Georg Brandl116aa622007-08-15 14:28:22 +0000951
952 ``L`` (long) [PY_LONG_LONG]
Georg Brandlaacc0892007-12-02 23:11:00 +0000953 Convert a C :ctype:`long long` to a Python integer object. Only available
Georg Brandl116aa622007-08-15 14:28:22 +0000954 on platforms that support :ctype:`long long`.
955
956 ``K`` (long) [unsigned PY_LONG_LONG]
Georg Brandlaacc0892007-12-02 23:11:00 +0000957 Convert a C :ctype:`unsigned long long` to a Python integer object. Only
Georg Brandl116aa622007-08-15 14:28:22 +0000958 available on platforms that support :ctype:`unsigned long long`.
959
960 ``n`` (int) [Py_ssize_t]
Georg Brandlaacc0892007-12-02 23:11:00 +0000961 Convert a C :ctype:`Py_ssize_t` to a Python integer.
Georg Brandl116aa622007-08-15 14:28:22 +0000962
Georg Brandl116aa622007-08-15 14:28:22 +0000963 ``c`` (string of length 1) [char]
964 Convert a C :ctype:`int` representing a character to a Python string of length
965 1.
966
967 ``d`` (float) [double]
968 Convert a C :ctype:`double` to a Python floating point number.
969
970 ``f`` (float) [float]
971 Same as ``d``.
972
973 ``D`` (complex) [Py_complex \*]
974 Convert a C :ctype:`Py_complex` structure to a Python complex number.
975
976 ``O`` (object) [PyObject \*]
977 Pass a Python object untouched (except for its reference count, which is
978 incremented by one). If the object passed in is a *NULL* pointer, it is assumed
979 that this was caused because the call producing the argument found an error and
980 set an exception. Therefore, :cfunc:`Py_BuildValue` will return *NULL* but won't
981 raise an exception. If no exception has been raised yet, :exc:`SystemError` is
982 set.
983
984 ``S`` (object) [PyObject \*]
985 Same as ``O``.
986
987 ``N`` (object) [PyObject \*]
988 Same as ``O``, except it doesn't increment the reference count on the object.
989 Useful when the object is created by a call to an object constructor in the
990 argument list.
991
992 ``O&`` (object) [*converter*, *anything*]
993 Convert *anything* to a Python object through a *converter* function. The
994 function is called with *anything* (which should be compatible with :ctype:`void
995 \*`) as its argument and should return a "new" Python object, or *NULL* if an
996 error occurred.
997
998 ``(items)`` (tuple) [*matching-items*]
999 Convert a sequence of C values to a Python tuple with the same number of items.
1000
1001 ``[items]`` (list) [*matching-items*]
1002 Convert a sequence of C values to a Python list with the same number of items.
1003
1004 ``{items}`` (dictionary) [*matching-items*]
1005 Convert a sequence of C values to a Python dictionary. Each pair of consecutive
1006 C values adds one item to the dictionary, serving as key and value,
1007 respectively.
1008
1009 If there is an error in the format string, the :exc:`SystemError` exception is
1010 set and *NULL* returned.
1011
1012
1013.. _string-conversion:
1014
1015String conversion and formatting
1016================================
1017
1018Functions for number conversion and formatted string output.
1019
1020
1021.. cfunction:: int PyOS_snprintf(char *str, size_t size, const char *format, ...)
1022
1023 Output not more than *size* bytes to *str* according to the format string
1024 *format* and the extra arguments. See the Unix man page :manpage:`snprintf(2)`.
1025
1026
1027.. cfunction:: int PyOS_vsnprintf(char *str, size_t size, const char *format, va_list va)
1028
1029 Output not more than *size* bytes to *str* according to the format string
1030 *format* and the variable argument list *va*. Unix man page
1031 :manpage:`vsnprintf(2)`.
1032
1033:cfunc:`PyOS_snprintf` and :cfunc:`PyOS_vsnprintf` wrap the Standard C library
1034functions :cfunc:`snprintf` and :cfunc:`vsnprintf`. Their purpose is to
1035guarantee consistent behavior in corner cases, which the Standard C functions do
1036not.
1037
1038The wrappers ensure that *str*[*size*-1] is always ``'\0'`` upon return. They
1039never write more than *size* bytes (including the trailing ``'\0'``) into str.
1040Both functions require that ``str != NULL``, ``size > 0`` and ``format !=
1041NULL``.
1042
1043If the platform doesn't have :cfunc:`vsnprintf` and the buffer size needed to
1044avoid truncation exceeds *size* by more than 512 bytes, Python aborts with a
1045*Py_FatalError*.
1046
1047The return value (*rv*) for these functions should be interpreted as follows:
1048
1049* When ``0 <= rv < size``, the output conversion was successful and *rv*
1050 characters were written to *str* (excluding the trailing ``'\0'`` byte at
1051 *str*[*rv*]).
1052
1053* When ``rv >= size``, the output conversion was truncated and a buffer with
1054 ``rv + 1`` bytes would have been needed to succeed. *str*[*size*-1] is ``'\0'``
1055 in this case.
1056
1057* When ``rv < 0``, "something bad happened." *str*[*size*-1] is ``'\0'`` in
1058 this case too, but the rest of *str* is undefined. The exact cause of the error
1059 depends on the underlying platform.
1060
1061The following functions provide locale-independent string to number conversions.
1062
1063
1064.. cfunction:: double PyOS_ascii_strtod(const char *nptr, char **endptr)
1065
1066 Convert a string to a :ctype:`double`. This function behaves like the Standard C
1067 function :cfunc:`strtod` does in the C locale. It does this without changing the
1068 current locale, since that would not be thread-safe.
1069
1070 :cfunc:`PyOS_ascii_strtod` should typically be used for reading configuration
1071 files or other non-user input that should be locale independent.
1072
Georg Brandl116aa622007-08-15 14:28:22 +00001073 See the Unix man page :manpage:`strtod(2)` for details.
1074
1075
1076.. cfunction:: char * PyOS_ascii_formatd(char *buffer, size_t buf_len, const char *format, double d)
1077
1078 Convert a :ctype:`double` to a string using the ``'.'`` as the decimal
1079 separator. *format* is a :cfunc:`printf`\ -style format string specifying the
1080 number format. Allowed conversion characters are ``'e'``, ``'E'``, ``'f'``,
1081 ``'F'``, ``'g'`` and ``'G'``.
1082
1083 The return value is a pointer to *buffer* with the converted string or NULL if
1084 the conversion failed.
1085
Georg Brandl116aa622007-08-15 14:28:22 +00001086
1087.. cfunction:: double PyOS_ascii_atof(const char *nptr)
1088
1089 Convert a string to a :ctype:`double` in a locale-independent way.
1090
Georg Brandl116aa622007-08-15 14:28:22 +00001091 See the Unix man page :manpage:`atof(2)` for details.
1092
Christian Heimes99170a52007-12-19 02:07:34 +00001093
1094.. cfunction:: char * PyOS_stricmp(char *s1, char *s2)
1095
1096 Case insensitive comparsion of strings. The functions works almost
1097 identical to :cfunc:`strcmp` except that it ignores the case.
1098
1099 .. versionadded:: 2.6
1100
1101
1102.. cfunction:: char * PyOS_strnicmp(char *s1, char *s2, Py_ssize_t size)
1103
1104 Case insensitive comparsion of strings. The functions works almost
1105 identical to :cfunc:`strncmp` except that it ignores the case.
1106
1107 .. versionadded:: 2.6
1108
Christian Heimesd8654cf2007-12-02 15:22:16 +00001109
1110.. _reflection:
1111
1112Reflection
1113==========
1114
1115.. cfunction:: PyObject* PyEval_GetBuiltins()
1116
1117 Return a dictionary of the builtins in the current execution frame,
1118 or the interpreter of the thread state if no frame is currently executing.
1119
1120
1121.. cfunction:: PyObject* PyEval_GetLocals()
1122
1123 Return a dictionary of the local variables in the current execution frame,
1124 or *NULL* if no frame is currently executing.
1125
1126
1127.. cfunction:: PyObject* PyEval_GetGlobals()
1128
1129 Return a dictionary of the global variables in the current execution frame,
1130 or *NULL* if no frame is currently executing.
1131
1132
1133.. cfunction:: PyFrameObject* PyEval_GetFrame()
1134
1135 Return the current thread state's frame, which is *NULL* if no frame is
1136 currently executing.
1137
1138
1139.. cfunction:: int PyEval_GetRestricted()
1140
1141 If there is a current frame and it is executing in restricted mode, return true,
1142 otherwise false.
1143
1144
1145.. cfunction:: const char* PyEval_GetFuncName(PyObject *func)
1146
1147 Return the name of *func* if it is a function, class or instance object, else the
1148 name of *func*\s type.
1149
1150
1151.. cfunction:: const char* PyEval_GetFuncDesc(PyObject *func)
1152
1153 Return a description string, depending on the type of *func*.
1154 Return values include "()" for functions and methods, " constructor",
1155 " instance", and " object". Concatenated with the result of
1156 :cfunc:`PyEval_GetFuncName`, the result will be a description of
1157 *func*.