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