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