blob: 6d493aaf3bd309e0eafa1aa7a0ec918ade2c66b0 [file] [log] [blame]
Georg Brandl54a3faa2008-01-20 09:30:57 +00001.. highlightlang:: c
2
3.. _arg-parsing:
4
5Parsing arguments and building values
6=====================================
7
8These functions are useful when creating your own extensions functions and
9methods. Additional information and examples are available in
10:ref:`extending-index`.
11
Georg Brandl60203b42010-10-06 10:11:56 +000012The first three of these functions described, :c:func:`PyArg_ParseTuple`,
13:c:func:`PyArg_ParseTupleAndKeywords`, and :c:func:`PyArg_Parse`, all use *format
Georg Brandl54a3faa2008-01-20 09:30:57 +000014strings* which are used to tell the function about the expected arguments. The
15format strings use the same syntax for each of these functions.
16
Antoine Pitrou83fd9b92010-05-03 15:57:23 +000017-----------------
18Parsing arguments
19-----------------
20
Georg Brandl54a3faa2008-01-20 09:30:57 +000021A format string consists of zero or more "format units." A format unit
22describes one Python object; it is usually a single character or a parenthesized
23sequence of format units. With a few exceptions, a format unit that is not a
24parenthesized sequence normally corresponds to a single address argument to
25these functions. In the following description, the quoted form is the format
26unit; the entry in (round) parentheses is the Python object type that matches
27the format unit; and the entry in [square] brackets is the type of the C
28variable(s) whose address should be passed.
29
Antoine Pitrou83fd9b92010-05-03 15:57:23 +000030Strings and buffers
31-------------------
32
Martin Panterc04fb562016-02-10 05:44:01 +000033These formats allow accessing an object as a contiguous chunk of memory.
Antoine Pitroud53dfa32011-01-06 07:16:31 +000034You don't have to provide raw storage for the returned unicode or bytes
35area. Also, you won't have to release any memory yourself, except with the
36``es``, ``es#``, ``et`` and ``et#`` formats.
Antoine Pitrou83fd9b92010-05-03 15:57:23 +000037
Georg Brandl60203b42010-10-06 10:11:56 +000038However, when a :c:type:`Py_buffer` structure gets filled, the underlying
Antoine Pitrou83fd9b92010-05-03 15:57:23 +000039buffer is locked so that the caller can subsequently use the buffer even
Georg Brandl60203b42010-10-06 10:11:56 +000040inside a :c:type:`Py_BEGIN_ALLOW_THREADS` block without the risk of mutable data
Antoine Pitrou83fd9b92010-05-03 15:57:23 +000041being resized or destroyed. As a result, **you have to call**
Georg Brandl60203b42010-10-06 10:11:56 +000042:c:func:`PyBuffer_Release` after you have finished processing the data (or
Antoine Pitrou83fd9b92010-05-03 15:57:23 +000043in any early abort case).
44
45Unless otherwise stated, buffers are not NUL-terminated.
46
47.. note::
Larry Hastings3732ed22014-03-15 21:13:56 -070048
Antoine Pitrou83fd9b92010-05-03 15:57:23 +000049 For all ``#`` variants of formats (``s#``, ``y#``, etc.), the type of
Georg Brandl60203b42010-10-06 10:11:56 +000050 the length argument (int or :c:type:`Py_ssize_t`) is controlled by
51 defining the macro :c:macro:`PY_SSIZE_T_CLEAN` before including
Antoine Pitrou83fd9b92010-05-03 15:57:23 +000052 :file:`Python.h`. If the macro was defined, length is a
Georg Brandl60203b42010-10-06 10:11:56 +000053 :c:type:`Py_ssize_t` rather than an :c:type:`int`. This behavior will change
54 in a future Python version to only support :c:type:`Py_ssize_t` and
55 drop :c:type:`int` support. It is best to always define :c:macro:`PY_SSIZE_T_CLEAN`.
Antoine Pitrou83fd9b92010-05-03 15:57:23 +000056
57
Victor Stinner69e25fa2010-06-07 21:20:41 +000058``s`` (:class:`str`) [const char \*]
Antoine Pitrou83fd9b92010-05-03 15:57:23 +000059 Convert a Unicode object to a C pointer to a character string.
60 A pointer to an existing string is stored in the character pointer
61 variable whose address you pass. The C string is NUL-terminated.
Serhiy Storchaka6f379f42016-07-12 09:14:15 +030062 The Python string must not contain embedded null characters; if it does,
63 a :exc:`ValueError` exception is raised. Unicode objects are converted
Victor Stinner69e25fa2010-06-07 21:20:41 +000064 to C strings using ``'utf-8'`` encoding. If this conversion fails, a
Georg Brandl54a3faa2008-01-20 09:30:57 +000065 :exc:`UnicodeError` is raised.
66
Antoine Pitrou83fd9b92010-05-03 15:57:23 +000067 .. note::
Serhiy Storchakab757c832014-12-05 22:25:22 +020068 This format does not accept :term:`bytes-like objects
69 <bytes-like object>`. If you want to accept
Antoine Pitrou83fd9b92010-05-03 15:57:23 +000070 filesystem paths and convert them to C character strings, it is
Georg Brandl60203b42010-10-06 10:11:56 +000071 preferable to use the ``O&`` format with :c:func:`PyUnicode_FSConverter`
Antoine Pitrou83fd9b92010-05-03 15:57:23 +000072 as *converter*.
Benjamin Peterson4469d0c2008-11-30 22:46:23 +000073
Serhiy Storchaka6f379f42016-07-12 09:14:15 +030074 .. versionchanged:: 3.5
75 Previously, :exc:`TypeError` was raised when embedded null characters
76 were encountered in the Python string.
77
Serhiy Storchakab757c832014-12-05 22:25:22 +020078``s*`` (:class:`str` or :term:`bytes-like object`) [Py_buffer]
79 This format accepts Unicode objects as well as bytes-like objects.
Georg Brandl60203b42010-10-06 10:11:56 +000080 It fills a :c:type:`Py_buffer` structure provided by the caller.
Antoine Pitrou83fd9b92010-05-03 15:57:23 +000081 In this case the resulting C string may contain embedded NUL bytes.
Victor Stinner69e25fa2010-06-07 21:20:41 +000082 Unicode objects are converted to C strings using ``'utf-8'`` encoding.
Georg Brandl8fa89522008-09-01 16:45:35 +000083
Serhiy Storchakab757c832014-12-05 22:25:22 +020084``s#`` (:class:`str`, read-only :term:`bytes-like object`) [const char \*, int or :c:type:`Py_ssize_t`]
85 Like ``s*``, except that it doesn't accept mutable bytes-like objects
Antoine Pitrou83fd9b92010-05-03 15:57:23 +000086 such as :class:`bytearray`. The result is stored into two C variables,
87 the first one a pointer to a C string, the second one its length.
Victor Stinner69e25fa2010-06-07 21:20:41 +000088 The string may contain embedded null bytes. Unicode objects are converted
89 to C strings using ``'utf-8'`` encoding.
Benjamin Peterson4469d0c2008-11-30 22:46:23 +000090
Victor Stinner69e25fa2010-06-07 21:20:41 +000091``z`` (:class:`str` or ``None``) [const char \*]
Georg Brandl54a3faa2008-01-20 09:30:57 +000092 Like ``s``, but the Python object may also be ``None``, in which case the C
93 pointer is set to *NULL*.
94
Serhiy Storchakab757c832014-12-05 22:25:22 +020095``z*`` (:class:`str`, :term:`bytes-like object` or ``None``) [Py_buffer]
Antoine Pitrou83fd9b92010-05-03 15:57:23 +000096 Like ``s*``, but the Python object may also be ``None``, in which case the
Georg Brandl60203b42010-10-06 10:11:56 +000097 ``buf`` member of the :c:type:`Py_buffer` structure is set to *NULL*.
Martin v. Löwis423be952008-08-13 15:53:07 +000098
Serhiy Storchakab757c832014-12-05 22:25:22 +020099``z#`` (:class:`str`, read-only :term:`bytes-like object` or ``None``) [const char \*, int]
Antoine Pitrou83fd9b92010-05-03 15:57:23 +0000100 Like ``s#``, but the Python object may also be ``None``, in which case the C
101 pointer is set to *NULL*.
102
Serhiy Storchakab757c832014-12-05 22:25:22 +0200103``y`` (read-only :term:`bytes-like object`) [const char \*]
Antoine Pitrou83fd9b92010-05-03 15:57:23 +0000104 This format converts a bytes-like object to a C pointer to a character
105 string; it does not accept Unicode objects. The bytes buffer must not
Serhiy Storchaka6f379f42016-07-12 09:14:15 +0300106 contain embedded null bytes; if it does, a :exc:`ValueError`
Antoine Pitrou83fd9b92010-05-03 15:57:23 +0000107 exception is raised.
108
Serhiy Storchaka6f379f42016-07-12 09:14:15 +0300109 .. versionchanged:: 3.5
110 Previously, :exc:`TypeError` was raised when embedded null bytes were
111 encountered in the bytes buffer.
112
Serhiy Storchakab757c832014-12-05 22:25:22 +0200113``y*`` (:term:`bytes-like object`) [Py_buffer]
Ezio Melottic228e962013-05-04 18:06:34 +0300114 This variant on ``s*`` doesn't accept Unicode objects, only
Serhiy Storchakab757c832014-12-05 22:25:22 +0200115 bytes-like objects. **This is the recommended way to accept
Antoine Pitrou83fd9b92010-05-03 15:57:23 +0000116 binary data.**
117
Serhiy Storchakab757c832014-12-05 22:25:22 +0200118``y#`` (read-only :term:`bytes-like object`) [const char \*, int]
119 This variant on ``s#`` doesn't accept Unicode objects, only bytes-like
120 objects.
Antoine Pitrou83fd9b92010-05-03 15:57:23 +0000121
Victor Stinner69e25fa2010-06-07 21:20:41 +0000122``S`` (:class:`bytes`) [PyBytesObject \*]
Antoine Pitrou83fd9b92010-05-03 15:57:23 +0000123 Requires that the Python object is a :class:`bytes` object, without
124 attempting any conversion. Raises :exc:`TypeError` if the object is not
Georg Brandl60203b42010-10-06 10:11:56 +0000125 a bytes object. The C variable may also be declared as :c:type:`PyObject\*`.
Antoine Pitrou83fd9b92010-05-03 15:57:23 +0000126
Victor Stinner69e25fa2010-06-07 21:20:41 +0000127``Y`` (:class:`bytearray`) [PyByteArrayObject \*]
Antoine Pitrou83fd9b92010-05-03 15:57:23 +0000128 Requires that the Python object is a :class:`bytearray` object, without
129 attempting any conversion. Raises :exc:`TypeError` if the object is not
Georg Brandl60203b42010-10-06 10:11:56 +0000130 a :class:`bytearray` object. The C variable may also be declared as :c:type:`PyObject\*`.
Georg Brandl8fa89522008-09-01 16:45:35 +0000131
Victor Stinner69e25fa2010-06-07 21:20:41 +0000132``u`` (:class:`str`) [Py_UNICODE \*]
Georg Brandl54a3faa2008-01-20 09:30:57 +0000133 Convert a Python Unicode object to a C pointer to a NUL-terminated buffer of
Georg Brandl60203b42010-10-06 10:11:56 +0000134 Unicode characters. You must pass the address of a :c:type:`Py_UNICODE`
Antoine Pitrou83fd9b92010-05-03 15:57:23 +0000135 pointer variable, which will be filled with the pointer to an existing
Georg Brandl60203b42010-10-06 10:11:56 +0000136 Unicode buffer. Please note that the width of a :c:type:`Py_UNICODE`
Antoine Pitrou83fd9b92010-05-03 15:57:23 +0000137 character depends on compilation options (it is either 16 or 32 bits).
Serhiy Storchaka6f379f42016-07-12 09:14:15 +0300138 The Python string must not contain embedded null characters; if it does,
139 a :exc:`ValueError` exception is raised.
Antoine Pitrou83fd9b92010-05-03 15:57:23 +0000140
Victor Stinner69e25fa2010-06-07 21:20:41 +0000141 .. note::
Antoine Pitrou83fd9b92010-05-03 15:57:23 +0000142 Since ``u`` doesn't give you back the length of the string, and it
143 may contain embedded NUL characters, it is recommended to use ``u#``
144 or ``U`` instead.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000145
Serhiy Storchaka6f379f42016-07-12 09:14:15 +0300146 .. versionchanged:: 3.5
147 Previously, :exc:`TypeError` was raised when embedded null characters
148 were encountered in the Python string.
149
Victor Stinner69e25fa2010-06-07 21:20:41 +0000150``u#`` (:class:`str`) [Py_UNICODE \*, int]
Georg Brandl54a3faa2008-01-20 09:30:57 +0000151 This variant on ``u`` stores into two C variables, the first one a pointer to a
Victor Stinner7909b002010-06-11 23:30:12 +0000152 Unicode data buffer, the second one its length.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000153
Victor Stinner69e25fa2010-06-07 21:20:41 +0000154``Z`` (:class:`str` or ``None``) [Py_UNICODE \*]
Antoine Pitrou83fd9b92010-05-03 15:57:23 +0000155 Like ``u``, but the Python object may also be ``None``, in which case the
Georg Brandl60203b42010-10-06 10:11:56 +0000156 :c:type:`Py_UNICODE` pointer is set to *NULL*.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000157
Victor Stinner69e25fa2010-06-07 21:20:41 +0000158``Z#`` (:class:`str` or ``None``) [Py_UNICODE \*, int]
Antoine Pitrou83fd9b92010-05-03 15:57:23 +0000159 Like ``u#``, but the Python object may also be ``None``, in which case the
Georg Brandl60203b42010-10-06 10:11:56 +0000160 :c:type:`Py_UNICODE` pointer is set to *NULL*.
Antoine Pitrou83fd9b92010-05-03 15:57:23 +0000161
Victor Stinner3ba82aa2011-12-01 02:52:55 +0100162``U`` (:class:`str`) [PyObject \*]
Antoine Pitrou83fd9b92010-05-03 15:57:23 +0000163 Requires that the Python object is a Unicode object, without attempting
164 any conversion. Raises :exc:`TypeError` if the object is not a Unicode
Georg Brandl60203b42010-10-06 10:11:56 +0000165 object. The C variable may also be declared as :c:type:`PyObject\*`.
Antoine Pitrou83fd9b92010-05-03 15:57:23 +0000166
Larry Hastingsab792ac2015-04-13 11:30:56 -0400167``w*`` (read-write :term:`bytes-like object`) [Py_buffer]
Victor Stinner25e8ec42010-06-25 00:02:38 +0000168 This format accepts any object which implements the read-write buffer
Georg Brandl60203b42010-10-06 10:11:56 +0000169 interface. It fills a :c:type:`Py_buffer` structure provided by the caller.
Victor Stinner25e8ec42010-06-25 00:02:38 +0000170 The buffer may contain embedded null bytes. The caller have to call
Georg Brandl60203b42010-10-06 10:11:56 +0000171 :c:func:`PyBuffer_Release` when it is done with the buffer.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000172
Victor Stinner69e25fa2010-06-07 21:20:41 +0000173``es`` (:class:`str`) [const char \*encoding, char \*\*buffer]
Victor Stinner7909b002010-06-11 23:30:12 +0000174 This variant on ``s`` is used for encoding Unicode into a character buffer.
175 It only works for encoded data without embedded NUL bytes.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000176
177 This format requires two arguments. The first is only used as input, and
Georg Brandl60203b42010-10-06 10:11:56 +0000178 must be a :c:type:`const char\*` which points to the name of an encoding as a
Victor Stinner7909b002010-06-11 23:30:12 +0000179 NUL-terminated string, or *NULL*, in which case ``'utf-8'`` encoding is used.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000180 An exception is raised if the named encoding is not known to Python. The
Georg Brandl60203b42010-10-06 10:11:56 +0000181 second argument must be a :c:type:`char\*\*`; the value of the pointer it
Georg Brandl54a3faa2008-01-20 09:30:57 +0000182 references will be set to a buffer with the contents of the argument text.
183 The text will be encoded in the encoding specified by the first argument.
184
Georg Brandl60203b42010-10-06 10:11:56 +0000185 :c:func:`PyArg_ParseTuple` will allocate a buffer of the needed size, copy the
Georg Brandl54a3faa2008-01-20 09:30:57 +0000186 encoded data into this buffer and adjust *\*buffer* to reference the newly
Georg Brandl60203b42010-10-06 10:11:56 +0000187 allocated storage. The caller is responsible for calling :c:func:`PyMem_Free` to
Georg Brandl54a3faa2008-01-20 09:30:57 +0000188 free the allocated buffer after use.
189
Victor Stinner69e25fa2010-06-07 21:20:41 +0000190``et`` (:class:`str`, :class:`bytes` or :class:`bytearray`) [const char \*encoding, char \*\*buffer]
191 Same as ``es`` except that byte string objects are passed through without
192 recoding them. Instead, the implementation assumes that the byte string object uses
Georg Brandl54a3faa2008-01-20 09:30:57 +0000193 the encoding passed in as parameter.
194
Victor Stinner69e25fa2010-06-07 21:20:41 +0000195``es#`` (:class:`str`) [const char \*encoding, char \*\*buffer, int \*buffer_length]
Victor Stinner7909b002010-06-11 23:30:12 +0000196 This variant on ``s#`` is used for encoding Unicode into a character buffer.
197 Unlike the ``es`` format, this variant allows input data which contains NUL
198 characters.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000199
200 It requires three arguments. The first is only used as input, and must be a
Georg Brandl60203b42010-10-06 10:11:56 +0000201 :c:type:`const char\*` which points to the name of an encoding as a
Victor Stinner7909b002010-06-11 23:30:12 +0000202 NUL-terminated string, or *NULL*, in which case ``'utf-8'`` encoding is used.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000203 An exception is raised if the named encoding is not known to Python. The
Georg Brandl60203b42010-10-06 10:11:56 +0000204 second argument must be a :c:type:`char\*\*`; the value of the pointer it
Georg Brandl54a3faa2008-01-20 09:30:57 +0000205 references will be set to a buffer with the contents of the argument text.
206 The text will be encoded in the encoding specified by the first argument.
207 The third argument must be a pointer to an integer; the referenced integer
208 will be set to the number of bytes in the output buffer.
209
210 There are two modes of operation:
211
212 If *\*buffer* points a *NULL* pointer, the function will allocate a buffer of
213 the needed size, copy the encoded data into this buffer and set *\*buffer* to
214 reference the newly allocated storage. The caller is responsible for calling
Georg Brandl60203b42010-10-06 10:11:56 +0000215 :c:func:`PyMem_Free` to free the allocated buffer after usage.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000216
217 If *\*buffer* points to a non-*NULL* pointer (an already allocated buffer),
Georg Brandl60203b42010-10-06 10:11:56 +0000218 :c:func:`PyArg_ParseTuple` will use this location as the buffer and interpret the
Georg Brandl54a3faa2008-01-20 09:30:57 +0000219 initial value of *\*buffer_length* as the buffer size. It will then copy the
220 encoded data into the buffer and NUL-terminate it. If the buffer is not large
Serhiy Storchakac4b813d2016-02-08 01:06:11 +0200221 enough, a :exc:`TypeError` will be set.
222 Note: starting from Python 3.6 a :exc:`ValueError` will be set.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000223
224 In both cases, *\*buffer_length* is set to the length of the encoded data
225 without the trailing NUL byte.
226
Victor Stinner69e25fa2010-06-07 21:20:41 +0000227``et#`` (:class:`str`, :class:`bytes` or :class:`bytearray`) [const char \*encoding, char \*\*buffer, int \*buffer_length]
228 Same as ``es#`` except that byte string objects are passed through without recoding
229 them. Instead, the implementation assumes that the byte string object uses the
Georg Brandl54a3faa2008-01-20 09:30:57 +0000230 encoding passed in as parameter.
231
Antoine Pitrou83fd9b92010-05-03 15:57:23 +0000232Numbers
233-------
234
Victor Stinner69e25fa2010-06-07 21:20:41 +0000235``b`` (:class:`int`) [unsigned char]
Benjamin Petersonda10d3b2009-01-01 00:23:30 +0000236 Convert a nonnegative Python integer to an unsigned tiny int, stored in a C
Georg Brandl60203b42010-10-06 10:11:56 +0000237 :c:type:`unsigned char`.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000238
Victor Stinner69e25fa2010-06-07 21:20:41 +0000239``B`` (:class:`int`) [unsigned char]
Georg Brandl54a3faa2008-01-20 09:30:57 +0000240 Convert a Python integer to a tiny int without overflow checking, stored in a C
Georg Brandl60203b42010-10-06 10:11:56 +0000241 :c:type:`unsigned char`.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000242
Victor Stinner69e25fa2010-06-07 21:20:41 +0000243``h`` (:class:`int`) [short int]
Georg Brandl60203b42010-10-06 10:11:56 +0000244 Convert a Python integer to a C :c:type:`short int`.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000245
Victor Stinner69e25fa2010-06-07 21:20:41 +0000246``H`` (:class:`int`) [unsigned short int]
Georg Brandl60203b42010-10-06 10:11:56 +0000247 Convert a Python integer to a C :c:type:`unsigned short int`, without overflow
Georg Brandl54a3faa2008-01-20 09:30:57 +0000248 checking.
249
Victor Stinner69e25fa2010-06-07 21:20:41 +0000250``i`` (:class:`int`) [int]
Georg Brandl60203b42010-10-06 10:11:56 +0000251 Convert a Python integer to a plain C :c:type:`int`.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000252
Victor Stinner69e25fa2010-06-07 21:20:41 +0000253``I`` (:class:`int`) [unsigned int]
Georg Brandl60203b42010-10-06 10:11:56 +0000254 Convert a Python integer to a C :c:type:`unsigned int`, without overflow
Georg Brandl54a3faa2008-01-20 09:30:57 +0000255 checking.
256
Victor Stinner69e25fa2010-06-07 21:20:41 +0000257``l`` (:class:`int`) [long int]
Georg Brandl60203b42010-10-06 10:11:56 +0000258 Convert a Python integer to a C :c:type:`long int`.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000259
Victor Stinner69e25fa2010-06-07 21:20:41 +0000260``k`` (:class:`int`) [unsigned long]
Georg Brandl60203b42010-10-06 10:11:56 +0000261 Convert a Python integer to a C :c:type:`unsigned long` without
Georg Brandl54a3faa2008-01-20 09:30:57 +0000262 overflow checking.
263
Victor Stinner69e25fa2010-06-07 21:20:41 +0000264``L`` (:class:`int`) [PY_LONG_LONG]
Georg Brandl60203b42010-10-06 10:11:56 +0000265 Convert a Python integer to a C :c:type:`long long`. This format is only
266 available on platforms that support :c:type:`long long` (or :c:type:`_int64` on
Georg Brandl54a3faa2008-01-20 09:30:57 +0000267 Windows).
268
Victor Stinner69e25fa2010-06-07 21:20:41 +0000269``K`` (:class:`int`) [unsigned PY_LONG_LONG]
Georg Brandl60203b42010-10-06 10:11:56 +0000270 Convert a Python integer to a C :c:type:`unsigned long long`
Georg Brandl54a3faa2008-01-20 09:30:57 +0000271 without overflow checking. This format is only available on platforms that
Georg Brandl60203b42010-10-06 10:11:56 +0000272 support :c:type:`unsigned long long` (or :c:type:`unsigned _int64` on Windows).
Georg Brandl54a3faa2008-01-20 09:30:57 +0000273
Victor Stinner69e25fa2010-06-07 21:20:41 +0000274``n`` (:class:`int`) [Py_ssize_t]
Georg Brandl60203b42010-10-06 10:11:56 +0000275 Convert a Python integer to a C :c:type:`Py_ssize_t`.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000276
Eli Bendersky906b88f2011-07-29 07:05:08 +0300277``c`` (:class:`bytes` or :class:`bytearray` of length 1) [char]
278 Convert a Python byte, represented as a :class:`bytes` or
279 :class:`bytearray` object of length 1, to a C :c:type:`char`.
280
Georg Brandl61063cc2012-06-24 22:48:30 +0200281 .. versionchanged:: 3.3
282 Allow :class:`bytearray` objects.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000283
Victor Stinner69e25fa2010-06-07 21:20:41 +0000284``C`` (:class:`str` of length 1) [int]
285 Convert a Python character, represented as a :class:`str` object of
Georg Brandl60203b42010-10-06 10:11:56 +0000286 length 1, to a C :c:type:`int`.
Benjamin Peterson7fe98532009-04-02 00:33:55 +0000287
Victor Stinner69e25fa2010-06-07 21:20:41 +0000288``f`` (:class:`float`) [float]
Georg Brandl60203b42010-10-06 10:11:56 +0000289 Convert a Python floating point number to a C :c:type:`float`.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000290
Victor Stinner69e25fa2010-06-07 21:20:41 +0000291``d`` (:class:`float`) [double]
Georg Brandl60203b42010-10-06 10:11:56 +0000292 Convert a Python floating point number to a C :c:type:`double`.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000293
Victor Stinner69e25fa2010-06-07 21:20:41 +0000294``D`` (:class:`complex`) [Py_complex]
Georg Brandl60203b42010-10-06 10:11:56 +0000295 Convert a Python complex number to a C :c:type:`Py_complex` structure.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000296
Antoine Pitrou83fd9b92010-05-03 15:57:23 +0000297Other objects
298-------------
299
Georg Brandl54a3faa2008-01-20 09:30:57 +0000300``O`` (object) [PyObject \*]
301 Store a Python object (without any conversion) in a C object pointer. The C
302 program thus receives the actual object that was passed. The object's reference
303 count is not increased. The pointer stored is not *NULL*.
304
305``O!`` (object) [*typeobject*, PyObject \*]
306 Store a Python object in a C object pointer. This is similar to ``O``, but
307 takes two C arguments: the first is the address of a Python type object, the
Georg Brandl60203b42010-10-06 10:11:56 +0000308 second is the address of the C variable (of type :c:type:`PyObject\*`) into which
Georg Brandl54a3faa2008-01-20 09:30:57 +0000309 the object pointer is stored. If the Python object does not have the required
310 type, :exc:`TypeError` is raised.
311
Larry Hastings2a727912014-01-16 11:32:01 -0800312.. _o_ampersand:
313
Georg Brandl54a3faa2008-01-20 09:30:57 +0000314``O&`` (object) [*converter*, *anything*]
315 Convert a Python object to a C variable through a *converter* function. This
316 takes two arguments: the first is a function, the second is the address of a C
Georg Brandl60203b42010-10-06 10:11:56 +0000317 variable (of arbitrary type), converted to :c:type:`void \*`. The *converter*
Georg Brandl54a3faa2008-01-20 09:30:57 +0000318 function in turn is called as follows::
319
320 status = converter(object, address);
321
322 where *object* is the Python object to be converted and *address* is the
Georg Brandl60203b42010-10-06 10:11:56 +0000323 :c:type:`void\*` argument that was passed to the :c:func:`PyArg_Parse\*` function.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000324 The returned *status* should be ``1`` for a successful conversion and ``0`` if
325 the conversion has failed. When the conversion fails, the *converter* function
Christian Heimes78644762008-03-04 23:39:23 +0000326 should raise an exception and leave the content of *address* unmodified.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000327
Georg Brandl67b21b72010-08-17 15:07:14 +0000328 If the *converter* returns ``Py_CLEANUP_SUPPORTED``, it may get called a
329 second time if the argument parsing eventually fails, giving the converter a
330 chance to release any memory that it had already allocated. In this second
331 call, the *object* parameter will be NULL; *address* will have the same value
332 as in the original call.
Martin v. Löwisc15bdef2009-05-29 14:47:46 +0000333
334 .. versionchanged:: 3.1
Georg Brandl67b21b72010-08-17 15:07:14 +0000335 ``Py_CLEANUP_SUPPORTED`` was added.
Martin v. Löwisc15bdef2009-05-29 14:47:46 +0000336
Larry Hastingsfaf91e72012-05-05 16:54:29 -0700337``p`` (:class:`bool`) [int]
Serhiy Storchakabf7b9ed2015-11-23 16:43:05 +0200338 Tests the value passed in for truth (a boolean **p**\ redicate) and converts
Larry Hastingsfaf91e72012-05-05 16:54:29 -0700339 the result to its equivalent C true/false integer value.
340 Sets the int to 1 if the expression was true and 0 if it was false.
341 This accepts any valid Python value. See :ref:`truth` for more
342 information about how Python tests values for truth.
343
Georg Brandl61063cc2012-06-24 22:48:30 +0200344 .. versionadded:: 3.3
Larry Hastingsfaf91e72012-05-05 16:54:29 -0700345
Victor Stinner69e25fa2010-06-07 21:20:41 +0000346``(items)`` (:class:`tuple`) [*matching-items*]
Georg Brandl54a3faa2008-01-20 09:30:57 +0000347 The object must be a Python sequence whose length is the number of format units
348 in *items*. The C arguments must correspond to the individual format units in
349 *items*. Format units for sequences may be nested.
350
351It is possible to pass "long" integers (integers whose value exceeds the
352platform's :const:`LONG_MAX`) however no proper range checking is done --- the
353most significant bits are silently truncated when the receiving field is too
354small to receive the value (actually, the semantics are inherited from downcasts
355in C --- your mileage may vary).
356
357A few other characters have a meaning in a format string. These may not occur
358inside nested parentheses. They are:
359
360``|``
361 Indicates that the remaining arguments in the Python argument list are optional.
362 The C variables corresponding to optional arguments should be initialized to
363 their default value --- when an optional argument is not specified,
Georg Brandl60203b42010-10-06 10:11:56 +0000364 :c:func:`PyArg_ParseTuple` does not touch the contents of the corresponding C
Georg Brandl54a3faa2008-01-20 09:30:57 +0000365 variable(s).
366
Larry Hastings83a9f482012-03-20 20:06:16 +0000367``$``
368 :c:func:`PyArg_ParseTupleAndKeywords` only:
369 Indicates that the remaining arguments in the Python argument list are
370 keyword-only. Currently, all keyword-only arguments must also be optional
371 arguments, so ``|`` must always be specified before ``$`` in the format
372 string.
373
374 .. versionadded:: 3.3
375
Georg Brandl54a3faa2008-01-20 09:30:57 +0000376``:``
377 The list of format units ends here; the string after the colon is used as the
378 function name in error messages (the "associated value" of the exception that
Georg Brandl60203b42010-10-06 10:11:56 +0000379 :c:func:`PyArg_ParseTuple` raises).
Georg Brandl54a3faa2008-01-20 09:30:57 +0000380
381``;``
382 The list of format units ends here; the string after the semicolon is used as
Benjamin Peterson92035012008-12-27 16:00:54 +0000383 the error message *instead* of the default error message. ``:`` and ``;``
384 mutually exclude each other.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000385
386Note that any Python object references which are provided to the caller are
387*borrowed* references; do not decrement their reference count!
388
389Additional arguments passed to these functions must be addresses of variables
390whose type is determined by the format string; these are used to store values
391from the input tuple. There are a few cases, as described in the list of format
392units above, where these parameters are used as input values; they should match
393what is specified for the corresponding format unit in that case.
394
Christian Heimes78644762008-03-04 23:39:23 +0000395For the conversion to succeed, the *arg* object must match the format
396and the format must be exhausted. On success, the
Georg Brandl60203b42010-10-06 10:11:56 +0000397:c:func:`PyArg_Parse\*` functions return true, otherwise they return
Christian Heimes78644762008-03-04 23:39:23 +0000398false and raise an appropriate exception. When the
Georg Brandl60203b42010-10-06 10:11:56 +0000399:c:func:`PyArg_Parse\*` functions fail due to conversion failure in one
Christian Heimes78644762008-03-04 23:39:23 +0000400of the format units, the variables at the addresses corresponding to that
401and the following format units are left untouched.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000402
Antoine Pitrou83fd9b92010-05-03 15:57:23 +0000403API Functions
404-------------
Georg Brandl54a3faa2008-01-20 09:30:57 +0000405
Georg Brandl60203b42010-10-06 10:11:56 +0000406.. c:function:: int PyArg_ParseTuple(PyObject *args, const char *format, ...)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000407
408 Parse the parameters of a function that takes only positional parameters into
409 local variables. Returns true on success; on failure, it returns false and
410 raises the appropriate exception.
411
412
Georg Brandl60203b42010-10-06 10:11:56 +0000413.. c:function:: int PyArg_VaParse(PyObject *args, const char *format, va_list vargs)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000414
Georg Brandl60203b42010-10-06 10:11:56 +0000415 Identical to :c:func:`PyArg_ParseTuple`, except that it accepts a va_list rather
Georg Brandl54a3faa2008-01-20 09:30:57 +0000416 than a variable number of arguments.
417
418
Georg Brandl60203b42010-10-06 10:11:56 +0000419.. c:function:: int PyArg_ParseTupleAndKeywords(PyObject *args, PyObject *kw, const char *format, char *keywords[], ...)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000420
421 Parse the parameters of a function that takes both positional and keyword
422 parameters into local variables. Returns true on success; on failure, it
423 returns false and raises the appropriate exception.
424
425
Georg Brandl60203b42010-10-06 10:11:56 +0000426.. c:function:: int PyArg_VaParseTupleAndKeywords(PyObject *args, PyObject *kw, const char *format, char *keywords[], va_list vargs)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000427
Georg Brandl60203b42010-10-06 10:11:56 +0000428 Identical to :c:func:`PyArg_ParseTupleAndKeywords`, except that it accepts a
Georg Brandl54a3faa2008-01-20 09:30:57 +0000429 va_list rather than a variable number of arguments.
430
431
Georg Brandl60203b42010-10-06 10:11:56 +0000432.. c:function:: int PyArg_ValidateKeywordArguments(PyObject *)
Benjamin Petersonfb886362010-04-24 18:21:17 +0000433
434 Ensure that the keys in the keywords argument dictionary are strings. This
Georg Brandl60203b42010-10-06 10:11:56 +0000435 is only needed if :c:func:`PyArg_ParseTupleAndKeywords` is not used, since the
Benjamin Petersonfb886362010-04-24 18:21:17 +0000436 latter already does this check.
437
Benjamin Peterson44d3d782010-04-25 21:03:34 +0000438 .. versionadded:: 3.2
439
Benjamin Petersonfb886362010-04-24 18:21:17 +0000440
Georg Brandl54a3faa2008-01-20 09:30:57 +0000441.. XXX deprecated, will be removed
Georg Brandl60203b42010-10-06 10:11:56 +0000442.. c:function:: int PyArg_Parse(PyObject *args, const char *format, ...)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000443
444 Function used to deconstruct the argument lists of "old-style" functions ---
445 these are functions which use the :const:`METH_OLDARGS` parameter parsing
Georg Brandla4c8c472014-10-31 10:38:49 +0100446 method, which has been removed in Python 3. This is not recommended for use
447 in parameter parsing in new code, and most code in the standard interpreter
448 has been modified to no longer use this for that purpose. It does remain a
449 convenient way to decompose other tuples, however, and may continue to be
450 used for that purpose.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000451
452
Georg Brandl60203b42010-10-06 10:11:56 +0000453.. c:function:: int PyArg_UnpackTuple(PyObject *args, const char *name, Py_ssize_t min, Py_ssize_t max, ...)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000454
455 A simpler form of parameter retrieval which does not use a format string to
456 specify the types of the arguments. Functions which use this method to retrieve
457 their parameters should be declared as :const:`METH_VARARGS` in function or
458 method tables. The tuple containing the actual parameters should be passed as
459 *args*; it must actually be a tuple. The length of the tuple must be at least
460 *min* and no more than *max*; *min* and *max* may be equal. Additional
461 arguments must be passed to the function, each of which should be a pointer to a
Georg Brandl60203b42010-10-06 10:11:56 +0000462 :c:type:`PyObject\*` variable; these will be filled in with the values from
Georg Brandl54a3faa2008-01-20 09:30:57 +0000463 *args*; they will contain borrowed references. The variables which correspond
464 to optional parameters not given by *args* will not be filled in; these should
465 be initialized by the caller. This function returns true on success and false if
466 *args* is not a tuple or contains the wrong number of elements; an exception
467 will be set if there was a failure.
468
469 This is an example of the use of this function, taken from the sources for the
470 :mod:`_weakref` helper module for weak references::
471
472 static PyObject *
473 weakref_ref(PyObject *self, PyObject *args)
474 {
475 PyObject *object;
476 PyObject *callback = NULL;
477 PyObject *result = NULL;
478
479 if (PyArg_UnpackTuple(args, "ref", 1, 2, &object, &callback)) {
480 result = PyWeakref_NewRef(object, callback);
481 }
482 return result;
483 }
484
Georg Brandl60203b42010-10-06 10:11:56 +0000485 The call to :c:func:`PyArg_UnpackTuple` in this example is entirely equivalent to
486 this call to :c:func:`PyArg_ParseTuple`::
Georg Brandl54a3faa2008-01-20 09:30:57 +0000487
488 PyArg_ParseTuple(args, "O|O:ref", &object, &callback)
489
490
Antoine Pitrou83fd9b92010-05-03 15:57:23 +0000491---------------
492Building values
493---------------
494
Georg Brandl60203b42010-10-06 10:11:56 +0000495.. c:function:: PyObject* Py_BuildValue(const char *format, ...)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000496
497 Create a new value based on a format string similar to those accepted by the
Georg Brandl60203b42010-10-06 10:11:56 +0000498 :c:func:`PyArg_Parse\*` family of functions and a sequence of values. Returns
Georg Brandl54a3faa2008-01-20 09:30:57 +0000499 the value or *NULL* in the case of an error; an exception will be raised if
500 *NULL* is returned.
501
Georg Brandl60203b42010-10-06 10:11:56 +0000502 :c:func:`Py_BuildValue` does not always build a tuple. It builds a tuple only if
Georg Brandl54a3faa2008-01-20 09:30:57 +0000503 its format string contains two or more format units. If the format string is
504 empty, it returns ``None``; if it contains exactly one format unit, it returns
505 whatever object is described by that format unit. To force it to return a tuple
506 of size 0 or one, parenthesize the format string.
507
508 When memory buffers are passed as parameters to supply data to build objects, as
509 for the ``s`` and ``s#`` formats, the required data is copied. Buffers provided
510 by the caller are never referenced by the objects created by
Georg Brandl60203b42010-10-06 10:11:56 +0000511 :c:func:`Py_BuildValue`. In other words, if your code invokes :c:func:`malloc`
512 and passes the allocated memory to :c:func:`Py_BuildValue`, your code is
513 responsible for calling :c:func:`free` for that memory once
514 :c:func:`Py_BuildValue` returns.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000515
516 In the following description, the quoted form is the format unit; the entry in
517 (round) parentheses is the Python object type that the format unit will return;
518 and the entry in [square] brackets is the type of the C value(s) to be passed.
519
520 The characters space, tab, colon and comma are ignored in format strings (but
521 not within format units such as ``s#``). This can be used to make long format
522 strings a tad more readable.
523
Victor Stinner69e25fa2010-06-07 21:20:41 +0000524 ``s`` (:class:`str` or ``None``) [char \*]
Victor Stinner2aa3af42010-06-18 23:59:45 +0000525 Convert a null-terminated C string to a Python :class:`str` object using ``'utf-8'``
Victor Stinner69e25fa2010-06-07 21:20:41 +0000526 encoding. If the C string pointer is *NULL*, ``None`` is used.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000527
Victor Stinner69e25fa2010-06-07 21:20:41 +0000528 ``s#`` (:class:`str` or ``None``) [char \*, int]
Victor Stinner2aa3af42010-06-18 23:59:45 +0000529 Convert a C string and its length to a Python :class:`str` object using ``'utf-8'``
Victor Stinner69e25fa2010-06-07 21:20:41 +0000530 encoding. If the C string pointer is *NULL*, the length is ignored and
531 ``None`` is returned.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000532
Victor Stinner69e25fa2010-06-07 21:20:41 +0000533 ``y`` (:class:`bytes`) [char \*]
Zachary Warea479b752014-01-31 12:06:14 -0600534 This converts a C string to a Python :class:`bytes` object. If the C
Benjamin Petersonffc94792008-10-21 21:10:07 +0000535 string pointer is *NULL*, ``None`` is returned.
536
Victor Stinner69e25fa2010-06-07 21:20:41 +0000537 ``y#`` (:class:`bytes`) [char \*, int]
Benjamin Petersonffc94792008-10-21 21:10:07 +0000538 This converts a C string and its lengths to a Python object. If the C
539 string pointer is *NULL*, ``None`` is returned.
540
Victor Stinner69e25fa2010-06-07 21:20:41 +0000541 ``z`` (:class:`str` or ``None``) [char \*]
Georg Brandl54a3faa2008-01-20 09:30:57 +0000542 Same as ``s``.
543
Victor Stinner69e25fa2010-06-07 21:20:41 +0000544 ``z#`` (:class:`str` or ``None``) [char \*, int]
Georg Brandl54a3faa2008-01-20 09:30:57 +0000545 Same as ``s#``.
546
Victor Stinner69e25fa2010-06-07 21:20:41 +0000547 ``u`` (:class:`str`) [Py_UNICODE \*]
Georg Brandl54a3faa2008-01-20 09:30:57 +0000548 Convert a null-terminated buffer of Unicode (UCS-2 or UCS-4) data to a Python
549 Unicode object. If the Unicode buffer pointer is *NULL*, ``None`` is returned.
550
Victor Stinner69e25fa2010-06-07 21:20:41 +0000551 ``u#`` (:class:`str`) [Py_UNICODE \*, int]
Georg Brandl54a3faa2008-01-20 09:30:57 +0000552 Convert a Unicode (UCS-2 or UCS-4) data buffer and its length to a Python
553 Unicode object. If the Unicode buffer pointer is *NULL*, the length is ignored
554 and ``None`` is returned.
555
Victor Stinner69e25fa2010-06-07 21:20:41 +0000556 ``U`` (:class:`str` or ``None``) [char \*]
Victor Stinner7eeb5b52010-06-07 19:57:46 +0000557 Same as ``s``.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000558
Victor Stinner69e25fa2010-06-07 21:20:41 +0000559 ``U#`` (:class:`str` or ``None``) [char \*, int]
Victor Stinner7eeb5b52010-06-07 19:57:46 +0000560 Same as ``s#``.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000561
Victor Stinner69e25fa2010-06-07 21:20:41 +0000562 ``i`` (:class:`int`) [int]
Georg Brandl60203b42010-10-06 10:11:56 +0000563 Convert a plain C :c:type:`int` to a Python integer object.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000564
Victor Stinner69e25fa2010-06-07 21:20:41 +0000565 ``b`` (:class:`int`) [char]
Georg Brandl60203b42010-10-06 10:11:56 +0000566 Convert a plain C :c:type:`char` to a Python integer object.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000567
Victor Stinner69e25fa2010-06-07 21:20:41 +0000568 ``h`` (:class:`int`) [short int]
Georg Brandl60203b42010-10-06 10:11:56 +0000569 Convert a plain C :c:type:`short int` to a Python integer object.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000570
Victor Stinner69e25fa2010-06-07 21:20:41 +0000571 ``l`` (:class:`int`) [long int]
Georg Brandl60203b42010-10-06 10:11:56 +0000572 Convert a C :c:type:`long int` to a Python integer object.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000573
Victor Stinner69e25fa2010-06-07 21:20:41 +0000574 ``B`` (:class:`int`) [unsigned char]
Georg Brandl60203b42010-10-06 10:11:56 +0000575 Convert a C :c:type:`unsigned char` to a Python integer object.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000576
Victor Stinner69e25fa2010-06-07 21:20:41 +0000577 ``H`` (:class:`int`) [unsigned short int]
Georg Brandl60203b42010-10-06 10:11:56 +0000578 Convert a C :c:type:`unsigned short int` to a Python integer object.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000579
Victor Stinner69e25fa2010-06-07 21:20:41 +0000580 ``I`` (:class:`int`) [unsigned int]
Georg Brandl60203b42010-10-06 10:11:56 +0000581 Convert a C :c:type:`unsigned int` to a Python integer object.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000582
Victor Stinner69e25fa2010-06-07 21:20:41 +0000583 ``k`` (:class:`int`) [unsigned long]
Georg Brandl60203b42010-10-06 10:11:56 +0000584 Convert a C :c:type:`unsigned long` to a Python integer object.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000585
Victor Stinner69e25fa2010-06-07 21:20:41 +0000586 ``L`` (:class:`int`) [PY_LONG_LONG]
Georg Brandl60203b42010-10-06 10:11:56 +0000587 Convert a C :c:type:`long long` to a Python integer object. Only available
588 on platforms that support :c:type:`long long` (or :c:type:`_int64` on
Victor Stinner7909b002010-06-11 23:30:12 +0000589 Windows).
Georg Brandl54a3faa2008-01-20 09:30:57 +0000590
Victor Stinner69e25fa2010-06-07 21:20:41 +0000591 ``K`` (:class:`int`) [unsigned PY_LONG_LONG]
Georg Brandl60203b42010-10-06 10:11:56 +0000592 Convert a C :c:type:`unsigned long long` to a Python integer object. Only
593 available on platforms that support :c:type:`unsigned long long` (or
594 :c:type:`unsigned _int64` on Windows).
Georg Brandl54a3faa2008-01-20 09:30:57 +0000595
Victor Stinner69e25fa2010-06-07 21:20:41 +0000596 ``n`` (:class:`int`) [Py_ssize_t]
Georg Brandl60203b42010-10-06 10:11:56 +0000597 Convert a C :c:type:`Py_ssize_t` to a Python integer.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000598
Victor Stinner69e25fa2010-06-07 21:20:41 +0000599 ``c`` (:class:`bytes` of length 1) [char]
Georg Brandl60203b42010-10-06 10:11:56 +0000600 Convert a C :c:type:`int` representing a byte to a Python :class:`bytes` object of
Benjamin Petersona921fb02009-04-03 22:18:11 +0000601 length 1.
602
Victor Stinner69e25fa2010-06-07 21:20:41 +0000603 ``C`` (:class:`str` of length 1) [int]
Georg Brandl60203b42010-10-06 10:11:56 +0000604 Convert a C :c:type:`int` representing a character to Python :class:`str`
Victor Stinner69e25fa2010-06-07 21:20:41 +0000605 object of length 1.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000606
Victor Stinner69e25fa2010-06-07 21:20:41 +0000607 ``d`` (:class:`float`) [double]
Georg Brandl60203b42010-10-06 10:11:56 +0000608 Convert a C :c:type:`double` to a Python floating point number.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000609
Victor Stinner69e25fa2010-06-07 21:20:41 +0000610 ``f`` (:class:`float`) [float]
Georg Brandl60203b42010-10-06 10:11:56 +0000611 Convert a C :c:type:`float` to a Python floating point number.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000612
Victor Stinner69e25fa2010-06-07 21:20:41 +0000613 ``D`` (:class:`complex`) [Py_complex \*]
Georg Brandl60203b42010-10-06 10:11:56 +0000614 Convert a C :c:type:`Py_complex` structure to a Python complex number.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000615
616 ``O`` (object) [PyObject \*]
617 Pass a Python object untouched (except for its reference count, which is
618 incremented by one). If the object passed in is a *NULL* pointer, it is assumed
619 that this was caused because the call producing the argument found an error and
Georg Brandl60203b42010-10-06 10:11:56 +0000620 set an exception. Therefore, :c:func:`Py_BuildValue` will return *NULL* but won't
Georg Brandl54a3faa2008-01-20 09:30:57 +0000621 raise an exception. If no exception has been raised yet, :exc:`SystemError` is
622 set.
623
624 ``S`` (object) [PyObject \*]
625 Same as ``O``.
626
627 ``N`` (object) [PyObject \*]
628 Same as ``O``, except it doesn't increment the reference count on the object.
629 Useful when the object is created by a call to an object constructor in the
630 argument list.
631
632 ``O&`` (object) [*converter*, *anything*]
633 Convert *anything* to a Python object through a *converter* function. The
Georg Brandl60203b42010-10-06 10:11:56 +0000634 function is called with *anything* (which should be compatible with :c:type:`void
Georg Brandl54a3faa2008-01-20 09:30:57 +0000635 \*`) as its argument and should return a "new" Python object, or *NULL* if an
636 error occurred.
637
Victor Stinner69e25fa2010-06-07 21:20:41 +0000638 ``(items)`` (:class:`tuple`) [*matching-items*]
Georg Brandl54a3faa2008-01-20 09:30:57 +0000639 Convert a sequence of C values to a Python tuple with the same number of items.
640
Victor Stinner69e25fa2010-06-07 21:20:41 +0000641 ``[items]`` (:class:`list`) [*matching-items*]
Georg Brandl54a3faa2008-01-20 09:30:57 +0000642 Convert a sequence of C values to a Python list with the same number of items.
643
Victor Stinner69e25fa2010-06-07 21:20:41 +0000644 ``{items}`` (:class:`dict`) [*matching-items*]
Georg Brandl54a3faa2008-01-20 09:30:57 +0000645 Convert a sequence of C values to a Python dictionary. Each pair of consecutive
646 C values adds one item to the dictionary, serving as key and value,
647 respectively.
648
649 If there is an error in the format string, the :exc:`SystemError` exception is
650 set and *NULL* returned.
Benjamin Petersonda10d3b2009-01-01 00:23:30 +0000651
Georg Brandl60203b42010-10-06 10:11:56 +0000652.. c:function:: PyObject* Py_VaBuildValue(const char *format, va_list vargs)
Benjamin Petersonda10d3b2009-01-01 00:23:30 +0000653
Georg Brandl60203b42010-10-06 10:11:56 +0000654 Identical to :c:func:`Py_BuildValue`, except that it accepts a va_list
Benjamin Petersonda10d3b2009-01-01 00:23:30 +0000655 rather than a variable number of arguments.