blob: 737568333c783629d118430d1488bafc2f40979d [file] [log] [blame]
Georg Brandl79e3d552008-01-19 22:14:27 +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
Sandro Tosi98ed08f2012-01-14 16:42:02 +010012The first three of these functions described, :c:func:`PyArg_ParseTuple`,
13:c:func:`PyArg_ParseTupleAndKeywords`, and :c:func:`PyArg_Parse`, all use
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +000014*format strings* which are used to tell the function about the expected
15arguments. The format strings use the same syntax for each of these
16functions.
Georg Brandl79e3d552008-01-19 22:14:27 +000017
18A format string consists of zero or more "format units." A format unit
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +000019describes one Python object; it is usually a single character or a
20parenthesized sequence of format units. With a few exceptions, a format unit
21that is not a parenthesized sequence normally corresponds to a single address
22argument to these functions. In the following description, the quoted form is
23the format unit; the entry in (round) parentheses is the Python object type
24that matches the format unit; and the entry in [square] brackets is the type
25of the C variable(s) whose address should be passed.
Georg Brandl79e3d552008-01-19 22:14:27 +000026
Martin Panter53ae0ba2016-02-10 05:44:01 +000027These formats allow accessing an object as a contiguous chunk of memory.
Sandro Tosi8448dfa2012-01-01 23:41:44 +010028You don't have to provide raw storage for the returned unicode or bytes
29area. Also, you won't have to release any memory yourself, except with the
30``es``, ``es#``, ``et`` and ``et#`` formats.
31
Victor Stinnerf70c5812010-04-03 08:40:16 +000032``s`` (string or Unicode) [const char \*]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +000033 Convert a Python string or Unicode object to a C pointer to a character
34 string. You must not provide storage for the string itself; a pointer to
35 an existing string is stored into the character pointer variable whose
36 address you pass. The C string is NUL-terminated. The Python string must
37 not contain embedded NUL bytes; if it does, a :exc:`TypeError` exception is
38 raised. Unicode objects are converted to C strings using the default
39 encoding. If this conversion fails, a :exc:`UnicodeError` is raised.
Georg Brandl79e3d552008-01-19 22:14:27 +000040
Sandro Tosi98ed08f2012-01-14 16:42:02 +010041``s#`` (string, Unicode or any read buffer compatible object) [const char \*, int (or :c:type:`Py_ssize_t`, see below)]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +000042 This variant on ``s`` stores into two C variables, the first one a pointer
43 to a character string, the second one its length. In this case the Python
44 string may contain embedded null bytes. Unicode objects pass back a
45 pointer to the default encoded string version of the object if such a
46 conversion is possible. All other read-buffer compatible objects pass back
47 a reference to the raw internal data representation.
Georg Brandl79e3d552008-01-19 22:14:27 +000048
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +000049 Starting with Python 2.5 the type of the length argument can be controlled
Sandro Tosi98ed08f2012-01-14 16:42:02 +010050 by defining the macro :c:macro:`PY_SSIZE_T_CLEAN` before including
51 :file:`Python.h`. If the macro is defined, length is a :c:type:`Py_ssize_t`
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +000052 rather than an int.
Gregory P. Smithb07bd102008-11-24 00:41:43 +000053
Gregory P. Smithb56fb122010-01-02 21:29:54 +000054``s*`` (string, Unicode, or any buffer compatible object) [Py_buffer]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +000055 Similar to ``s#``, this code fills a Py_buffer structure provided by the
56 caller. The buffer gets locked, so that the caller can subsequently use
57 the buffer even inside a ``Py_BEGIN_ALLOW_THREADS`` block; the caller is
58 responsible for calling ``PyBuffer_Release`` with the structure after it
59 has processed the data.
Martin v. Löwisf91d46a2008-08-12 14:49:50 +000060
Georg Brandlfc29f272009-01-02 20:25:14 +000061 .. versionadded:: 2.6
Martin v. Löwisf91d46a2008-08-12 14:49:50 +000062
Victor Stinnerf70c5812010-04-03 08:40:16 +000063``z`` (string, Unicode or ``None``) [const char \*]
Georg Brandl79e3d552008-01-19 22:14:27 +000064 Like ``s``, but the Python object may also be ``None``, in which case the C
65 pointer is set to *NULL*.
66
Victor Stinnerf70c5812010-04-03 08:40:16 +000067``z#`` (string, Unicode, ``None`` or any read buffer compatible object) [const char \*, int]
Georg Brandl79e3d552008-01-19 22:14:27 +000068 This is to ``s#`` as ``z`` is to ``s``.
69
Victor Stinnerf70c5812010-04-03 08:40:16 +000070``z*`` (string, Unicode, ``None`` or any buffer compatible object) [Py_buffer]
Martin v. Löwisf91d46a2008-08-12 14:49:50 +000071 This is to ``s*`` as ``z`` is to ``s``.
Benjamin Peterson4eb99392008-08-16 03:02:41 +000072
Georg Brandlfc29f272009-01-02 20:25:14 +000073 .. versionadded:: 2.6
Martin v. Löwisf91d46a2008-08-12 14:49:50 +000074
Victor Stinnerf70c5812010-04-03 08:40:16 +000075``u`` (Unicode) [Py_UNICODE \*]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +000076 Convert a Python Unicode object to a C pointer to a NUL-terminated buffer
77 of 16-bit Unicode (UTF-16) data. As with ``s``, there is no need to
78 provide storage for the Unicode data buffer; a pointer to the existing
Sandro Tosi98ed08f2012-01-14 16:42:02 +010079 Unicode data is stored into the :c:type:`Py_UNICODE` pointer variable whose
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +000080 address you pass.
Georg Brandl79e3d552008-01-19 22:14:27 +000081
Victor Stinnerf70c5812010-04-03 08:40:16 +000082``u#`` (Unicode) [Py_UNICODE \*, int]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +000083 This variant on ``u`` stores into two C variables, the first one a pointer
84 to a Unicode data buffer, the second one its length. Non-Unicode objects
85 are handled by interpreting their read-buffer pointer as pointer to a
Sandro Tosi98ed08f2012-01-14 16:42:02 +010086 :c:type:`Py_UNICODE` array.
Georg Brandl79e3d552008-01-19 22:14:27 +000087
Victor Stinnerf70c5812010-04-03 08:40:16 +000088``es`` (string, Unicode or character buffer compatible object) [const char \*encoding, char \*\*buffer]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +000089 This variant on ``s`` is used for encoding Unicode and objects convertible
90 to Unicode into a character buffer. It only works for encoded data without
91 embedded NUL bytes.
Georg Brandl79e3d552008-01-19 22:14:27 +000092
93 This format requires two arguments. The first is only used as input, and
Sandro Tosi98ed08f2012-01-14 16:42:02 +010094 must be a :c:type:`const char\*` which points to the name of an encoding as
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +000095 a NUL-terminated string, or *NULL*, in which case the default encoding is
96 used. An exception is raised if the named encoding is not known to Python.
Sandro Tosi98ed08f2012-01-14 16:42:02 +010097 The second argument must be a :c:type:`char\*\*`; the value of the pointer
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +000098 it references will be set to a buffer with the contents of the argument
99 text. The text will be encoded in the encoding specified by the first
100 argument.
Georg Brandl79e3d552008-01-19 22:14:27 +0000101
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100102 :c:func:`PyArg_ParseTuple` will allocate a buffer of the needed size, copy
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000103 the encoded data into this buffer and adjust *\*buffer* to reference the
104 newly allocated storage. The caller is responsible for calling
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100105 :c:func:`PyMem_Free` to free the allocated buffer after use.
Georg Brandl79e3d552008-01-19 22:14:27 +0000106
Victor Stinnerf70c5812010-04-03 08:40:16 +0000107``et`` (string, Unicode or character buffer compatible object) [const char \*encoding, char \*\*buffer]
Georg Brandl79e3d552008-01-19 22:14:27 +0000108 Same as ``es`` except that 8-bit string objects are passed through without
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000109 recoding them. Instead, the implementation assumes that the string object
110 uses the encoding passed in as parameter.
Georg Brandl79e3d552008-01-19 22:14:27 +0000111
Victor Stinnerf70c5812010-04-03 08:40:16 +0000112``es#`` (string, Unicode or character buffer compatible object) [const char \*encoding, char \*\*buffer, int \*buffer_length]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000113 This variant on ``s#`` is used for encoding Unicode and objects convertible
114 to Unicode into a character buffer. Unlike the ``es`` format, this variant
115 allows input data which contains NUL characters.
Georg Brandl79e3d552008-01-19 22:14:27 +0000116
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000117 It requires three arguments. The first is only used as input, and must be
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100118 a :c:type:`const char\*` which points to the name of an encoding as a
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000119 NUL-terminated string, or *NULL*, in which case the default encoding is
120 used. An exception is raised if the named encoding is not known to Python.
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100121 The second argument must be a :c:type:`char\*\*`; the value of the pointer
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000122 it references will be set to a buffer with the contents of the argument
123 text. The text will be encoded in the encoding specified by the first
124 argument. The third argument must be a pointer to an integer; the
125 referenced integer will be set to the number of bytes in the output buffer.
Georg Brandl79e3d552008-01-19 22:14:27 +0000126
127 There are two modes of operation:
128
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000129 If *\*buffer* points a *NULL* pointer, the function will allocate a buffer
130 of the needed size, copy the encoded data into this buffer and set
131 *\*buffer* to reference the newly allocated storage. The caller is
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100132 responsible for calling :c:func:`PyMem_Free` to free the allocated buffer
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000133 after usage.
Georg Brandl79e3d552008-01-19 22:14:27 +0000134
135 If *\*buffer* points to a non-*NULL* pointer (an already allocated buffer),
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100136 :c:func:`PyArg_ParseTuple` will use this location as the buffer and
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000137 interpret the initial value of *\*buffer_length* as the buffer size. It
138 will then copy the encoded data into the buffer and NUL-terminate it. If
Serhiy Storchaka36ae29c2016-02-08 01:05:48 +0200139 the buffer is not large enough, a :exc:`TypeError` will be set.
140 Note: starting from Python 3.6 a :exc:`ValueError` will be set.
Georg Brandl79e3d552008-01-19 22:14:27 +0000141
142 In both cases, *\*buffer_length* is set to the length of the encoded data
143 without the trailing NUL byte.
144
Victor Stinnerf70c5812010-04-03 08:40:16 +0000145``et#`` (string, Unicode or character buffer compatible object) [const char \*encoding, char \*\*buffer, int \*buffer_length]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000146 Same as ``es#`` except that string objects are passed through without
147 recoding them. Instead, the implementation assumes that the string object
148 uses the encoding passed in as parameter.
Georg Brandl79e3d552008-01-19 22:14:27 +0000149
Georg Brandl50ae9e72008-12-27 19:02:59 +0000150``b`` (integer) [unsigned char]
151 Convert a nonnegative Python integer to an unsigned tiny int, stored in a C
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100152 :c:type:`unsigned char`.
Georg Brandl79e3d552008-01-19 22:14:27 +0000153
154``B`` (integer) [unsigned char]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000155 Convert a Python integer to a tiny int without overflow checking, stored in
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100156 a C :c:type:`unsigned char`.
Georg Brandl79e3d552008-01-19 22:14:27 +0000157
158 .. versionadded:: 2.3
159
160``h`` (integer) [short int]
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100161 Convert a Python integer to a C :c:type:`short int`.
Georg Brandl79e3d552008-01-19 22:14:27 +0000162
163``H`` (integer) [unsigned short int]
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100164 Convert a Python integer to a C :c:type:`unsigned short int`, without
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000165 overflow checking.
Georg Brandl79e3d552008-01-19 22:14:27 +0000166
167 .. versionadded:: 2.3
168
169``i`` (integer) [int]
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100170 Convert a Python integer to a plain C :c:type:`int`.
Georg Brandl79e3d552008-01-19 22:14:27 +0000171
172``I`` (integer) [unsigned int]
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100173 Convert a Python integer to a C :c:type:`unsigned int`, without overflow
Georg Brandl79e3d552008-01-19 22:14:27 +0000174 checking.
175
176 .. versionadded:: 2.3
177
178``l`` (integer) [long int]
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100179 Convert a Python integer to a C :c:type:`long int`.
Georg Brandl79e3d552008-01-19 22:14:27 +0000180
181``k`` (integer) [unsigned long]
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100182 Convert a Python integer or long integer to a C :c:type:`unsigned long`
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000183 without overflow checking.
Georg Brandl79e3d552008-01-19 22:14:27 +0000184
185 .. versionadded:: 2.3
186
187``L`` (integer) [PY_LONG_LONG]
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100188 Convert a Python integer to a C :c:type:`long long`. This format is only
189 available on platforms that support :c:type:`long long` (or :c:type:`_int64`
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000190 on Windows).
Georg Brandl79e3d552008-01-19 22:14:27 +0000191
192``K`` (integer) [unsigned PY_LONG_LONG]
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100193 Convert a Python integer or long integer to a C :c:type:`unsigned long long`
Georg Brandl79e3d552008-01-19 22:14:27 +0000194 without overflow checking. This format is only available on platforms that
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100195 support :c:type:`unsigned long long` (or :c:type:`unsigned _int64` on
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000196 Windows).
Georg Brandl79e3d552008-01-19 22:14:27 +0000197
198 .. versionadded:: 2.3
199
200``n`` (integer) [Py_ssize_t]
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100201 Convert a Python integer or long integer to a C :c:type:`Py_ssize_t`.
Georg Brandl79e3d552008-01-19 22:14:27 +0000202
203 .. versionadded:: 2.5
204
205``c`` (string of length 1) [char]
206 Convert a Python character, represented as a string of length 1, to a C
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100207 :c:type:`char`.
Georg Brandl79e3d552008-01-19 22:14:27 +0000208
209``f`` (float) [float]
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100210 Convert a Python floating point number to a C :c:type:`float`.
Georg Brandl79e3d552008-01-19 22:14:27 +0000211
212``d`` (float) [double]
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100213 Convert a Python floating point number to a C :c:type:`double`.
Georg Brandl79e3d552008-01-19 22:14:27 +0000214
215``D`` (complex) [Py_complex]
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100216 Convert a Python complex number to a C :c:type:`Py_complex` structure.
Georg Brandl79e3d552008-01-19 22:14:27 +0000217
218``O`` (object) [PyObject \*]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000219 Store a Python object (without any conversion) in a C object pointer. The
220 C program thus receives the actual object that was passed. The object's
221 reference count is not increased. The pointer stored is not *NULL*.
Georg Brandl79e3d552008-01-19 22:14:27 +0000222
223``O!`` (object) [*typeobject*, PyObject \*]
224 Store a Python object in a C object pointer. This is similar to ``O``, but
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000225 takes two C arguments: the first is the address of a Python type object,
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100226 the second is the address of the C variable (of type :c:type:`PyObject\*`)
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000227 into which the object pointer is stored. If the Python object does not
228 have the required type, :exc:`TypeError` is raised.
Georg Brandl79e3d552008-01-19 22:14:27 +0000229
230``O&`` (object) [*converter*, *anything*]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000231 Convert a Python object to a C variable through a *converter* function.
232 This takes two arguments: the first is a function, the second is the
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100233 address of a C variable (of arbitrary type), converted to :c:type:`void \*`.
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000234 The *converter* function in turn is called as follows::
Georg Brandl79e3d552008-01-19 22:14:27 +0000235
236 status = converter(object, address);
237
238 where *object* is the Python object to be converted and *address* is the
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100239 :c:type:`void\*` argument that was passed to the :c:func:`PyArg_Parse\*`
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000240 function. The returned *status* should be ``1`` for a successful
241 conversion and ``0`` if the conversion has failed. When the conversion
242 fails, the *converter* function should raise an exception and leave the
243 content of *address* unmodified.
Georg Brandl79e3d552008-01-19 22:14:27 +0000244
245``S`` (string) [PyStringObject \*]
246 Like ``O`` but requires that the Python object is a string object. Raises
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000247 :exc:`TypeError` if the object is not a string object. The C variable may
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100248 also be declared as :c:type:`PyObject\*`.
Georg Brandl79e3d552008-01-19 22:14:27 +0000249
250``U`` (Unicode string) [PyUnicodeObject \*]
251 Like ``O`` but requires that the Python object is a Unicode object. Raises
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000252 :exc:`TypeError` if the object is not a Unicode object. The C variable may
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100253 also be declared as :c:type:`PyObject\*`.
Georg Brandl79e3d552008-01-19 22:14:27 +0000254
255``t#`` (read-only character buffer) [char \*, int]
256 Like ``s#``, but accepts any object which implements the read-only buffer
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100257 interface. The :c:type:`char\*` variable is set to point to the first byte
258 of the buffer, and the :c:type:`int` is set to the length of the buffer.
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000259 Only single-segment buffer objects are accepted; :exc:`TypeError` is raised
260 for all others.
Georg Brandl79e3d552008-01-19 22:14:27 +0000261
262``w`` (read-write character buffer) [char \*]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000263 Similar to ``s``, but accepts any object which implements the read-write
264 buffer interface. The caller must determine the length of the buffer by
265 other means, or use ``w#`` instead. Only single-segment buffer objects are
266 accepted; :exc:`TypeError` is raised for all others.
Georg Brandl79e3d552008-01-19 22:14:27 +0000267
Christian Heimesc70e5f92008-11-30 21:16:28 +0000268``w#`` (read-write character buffer) [char \*, Py_ssize_t]
Georg Brandl79e3d552008-01-19 22:14:27 +0000269 Like ``s#``, but accepts any object which implements the read-write buffer
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100270 interface. The :c:type:`char \*` variable is set to point to the first byte
271 of the buffer, and the :c:type:`Py_ssize_t` is set to the length of the
Jeroen Ruigrok van der Wervenc2aa7b82009-04-25 18:57:32 +0000272 buffer. Only single-segment buffer objects are accepted; :exc:`TypeError`
273 is raised for all others.
Georg Brandl79e3d552008-01-19 22:14:27 +0000274
Gregory P. Smithb56fb122010-01-02 21:29:54 +0000275``w*`` (read-write byte-oriented buffer) [Py_buffer]
Martin v. Löwisf91d46a2008-08-12 14:49:50 +0000276 This is to ``w`` what ``s*`` is to ``s``.
Georg Brandlfc29f272009-01-02 20:25:14 +0000277
Martin v. Löwisf91d46a2008-08-12 14:49:50 +0000278 .. versionadded:: 2.6
279
Georg Brandl79e3d552008-01-19 22:14:27 +0000280``(items)`` (tuple) [*matching-items*]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000281 The object must be a Python sequence whose length is the number of format
282 units in *items*. The C arguments must correspond to the individual format
283 units in *items*. Format units for sequences may be nested.
Georg Brandl79e3d552008-01-19 22:14:27 +0000284
285 .. note::
286
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000287 Prior to Python version 1.5.2, this format specifier only accepted a
288 tuple containing the individual parameters, not an arbitrary sequence.
289 Code which previously caused :exc:`TypeError` to be raised here may now
290 proceed without an exception. This is not expected to be a problem for
291 existing code.
Georg Brandl79e3d552008-01-19 22:14:27 +0000292
293It is possible to pass Python long integers where integers are requested;
294however no proper range checking is done --- the most significant bits are
295silently truncated when the receiving field is too small to receive the value
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000296(actually, the semantics are inherited from downcasts in C --- your mileage
297may vary).
Georg Brandl79e3d552008-01-19 22:14:27 +0000298
299A few other characters have a meaning in a format string. These may not occur
300inside nested parentheses. They are:
301
302``|``
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000303 Indicates that the remaining arguments in the Python argument list are
304 optional. The C variables corresponding to optional arguments should be
305 initialized to their default value --- when an optional argument is not
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100306 specified, :c:func:`PyArg_ParseTuple` does not touch the contents of the
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000307 corresponding C variable(s).
Georg Brandl79e3d552008-01-19 22:14:27 +0000308
309``:``
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000310 The list of format units ends here; the string after the colon is used as
311 the function name in error messages (the "associated value" of the
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100312 exception that :c:func:`PyArg_ParseTuple` raises).
Georg Brandl79e3d552008-01-19 22:14:27 +0000313
314``;``
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000315 The list of format units ends here; the string after the semicolon is used
316 as the error message *instead* of the default error message. ``:`` and
317 ``;`` mutually exclude each other.
Georg Brandl79e3d552008-01-19 22:14:27 +0000318
319Note that any Python object references which are provided to the caller are
320*borrowed* references; do not decrement their reference count!
321
322Additional arguments passed to these functions must be addresses of variables
323whose type is determined by the format string; these are used to store values
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000324from the input tuple. There are a few cases, as described in the list of
325format units above, where these parameters are used as input values; they
326should match what is specified for the corresponding format unit in that case.
Georg Brandl79e3d552008-01-19 22:14:27 +0000327
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000328For the conversion to succeed, the *arg* object must match the format and the
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100329format must be exhausted. On success, the :c:func:`PyArg_Parse\*` functions
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000330return true, otherwise they return false and raise an appropriate exception.
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100331When the :c:func:`PyArg_Parse\*` functions fail due to conversion failure in
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000332one of the format units, the variables at the addresses corresponding to that
Georg Brandlfd6cabf2008-03-04 07:33:30 +0000333and the following format units are left untouched.
Georg Brandl79e3d552008-01-19 22:14:27 +0000334
335
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100336.. c:function:: int PyArg_ParseTuple(PyObject *args, const char *format, ...)
Georg Brandl79e3d552008-01-19 22:14:27 +0000337
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000338 Parse the parameters of a function that takes only positional parameters
339 into local variables. Returns true on success; on failure, it returns
340 false and raises the appropriate exception.
Georg Brandl79e3d552008-01-19 22:14:27 +0000341
342
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100343.. c:function:: int PyArg_VaParse(PyObject *args, const char *format, va_list vargs)
Georg Brandl79e3d552008-01-19 22:14:27 +0000344
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100345 Identical to :c:func:`PyArg_ParseTuple`, except that it accepts a va_list
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000346 rather than a variable number of arguments.
Georg Brandl79e3d552008-01-19 22:14:27 +0000347
348
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100349.. c:function:: int PyArg_ParseTupleAndKeywords(PyObject *args, PyObject *kw, const char *format, char *keywords[], ...)
Georg Brandl79e3d552008-01-19 22:14:27 +0000350
351 Parse the parameters of a function that takes both positional and keyword
352 parameters into local variables. Returns true on success; on failure, it
353 returns false and raises the appropriate exception.
354
355
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100356.. c:function:: int PyArg_VaParseTupleAndKeywords(PyObject *args, PyObject *kw, const char *format, char *keywords[], va_list vargs)
Georg Brandl79e3d552008-01-19 22:14:27 +0000357
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100358 Identical to :c:func:`PyArg_ParseTupleAndKeywords`, except that it accepts a
Georg Brandl79e3d552008-01-19 22:14:27 +0000359 va_list rather than a variable number of arguments.
360
361
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100362.. c:function:: int PyArg_Parse(PyObject *args, const char *format, ...)
Georg Brandl79e3d552008-01-19 22:14:27 +0000363
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000364 Function used to deconstruct the argument lists of "old-style" functions
365 --- these are functions which use the :const:`METH_OLDARGS` parameter
366 parsing method. This is not recommended for use in parameter parsing in
367 new code, and most code in the standard interpreter has been modified to no
368 longer use this for that purpose. It does remain a convenient way to
369 decompose other tuples, however, and may continue to be used for that
370 purpose.
Georg Brandl79e3d552008-01-19 22:14:27 +0000371
372
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100373.. c:function:: int PyArg_UnpackTuple(PyObject *args, const char *name, Py_ssize_t min, Py_ssize_t max, ...)
Georg Brandl79e3d552008-01-19 22:14:27 +0000374
375 A simpler form of parameter retrieval which does not use a format string to
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000376 specify the types of the arguments. Functions which use this method to
377 retrieve their parameters should be declared as :const:`METH_VARARGS` in
378 function or method tables. The tuple containing the actual parameters
379 should be passed as *args*; it must actually be a tuple. The length of the
380 tuple must be at least *min* and no more than *max*; *min* and *max* may be
381 equal. Additional arguments must be passed to the function, each of which
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100382 should be a pointer to a :c:type:`PyObject\*` variable; these will be filled
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000383 in with the values from *args*; they will contain borrowed references. The
384 variables which correspond to optional parameters not given by *args* will
385 not be filled in; these should be initialized by the caller. This function
386 returns true on success and false if *args* is not a tuple or contains the
387 wrong number of elements; an exception will be set if there was a failure.
Georg Brandl79e3d552008-01-19 22:14:27 +0000388
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000389 This is an example of the use of this function, taken from the sources for
390 the :mod:`_weakref` helper module for weak references::
Georg Brandl79e3d552008-01-19 22:14:27 +0000391
392 static PyObject *
393 weakref_ref(PyObject *self, PyObject *args)
394 {
395 PyObject *object;
396 PyObject *callback = NULL;
397 PyObject *result = NULL;
398
399 if (PyArg_UnpackTuple(args, "ref", 1, 2, &object, &callback)) {
400 result = PyWeakref_NewRef(object, callback);
401 }
402 return result;
403 }
404
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100405 The call to :c:func:`PyArg_UnpackTuple` in this example is entirely
406 equivalent to this call to :c:func:`PyArg_ParseTuple`::
Georg Brandl79e3d552008-01-19 22:14:27 +0000407
408 PyArg_ParseTuple(args, "O|O:ref", &object, &callback)
409
410 .. versionadded:: 2.2
411
Jeroen Ruigrok van der Werven089c5cd2009-04-25 17:59:03 +0000412 .. versionchanged:: 2.5
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100413 This function used an :c:type:`int` type for *min* and *max*. This might
Jeroen Ruigrok van der Werven089c5cd2009-04-25 17:59:03 +0000414 require changes in your code for properly supporting 64-bit systems.
415
Georg Brandl79e3d552008-01-19 22:14:27 +0000416
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100417.. c:function:: PyObject* Py_BuildValue(const char *format, ...)
Georg Brandl79e3d552008-01-19 22:14:27 +0000418
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000419 Create a new value based on a format string similar to those accepted by
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100420 the :c:func:`PyArg_Parse\*` family of functions and a sequence of values.
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000421 Returns the value or *NULL* in the case of an error; an exception will be
422 raised if *NULL* is returned.
Georg Brandl79e3d552008-01-19 22:14:27 +0000423
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100424 :c:func:`Py_BuildValue` does not always build a tuple. It builds a tuple
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000425 only if its format string contains two or more format units. If the format
426 string is empty, it returns ``None``; if it contains exactly one format
427 unit, it returns whatever object is described by that format unit. To
Serhiy Storchakad585c522016-10-27 21:41:04 +0300428 force it to return a tuple of size ``0`` or one, parenthesize the format
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000429 string.
Georg Brandl79e3d552008-01-19 22:14:27 +0000430
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000431 When memory buffers are passed as parameters to supply data to build
432 objects, as for the ``s`` and ``s#`` formats, the required data is copied.
433 Buffers provided by the caller are never referenced by the objects created
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100434 by :c:func:`Py_BuildValue`. In other words, if your code invokes
435 :c:func:`malloc` and passes the allocated memory to :c:func:`Py_BuildValue`,
436 your code is responsible for calling :c:func:`free` for that memory once
437 :c:func:`Py_BuildValue` returns.
Georg Brandl79e3d552008-01-19 22:14:27 +0000438
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000439 In the following description, the quoted form is the format unit; the entry
440 in (round) parentheses is the Python object type that the format unit will
441 return; and the entry in [square] brackets is the type of the C value(s) to
442 be passed.
Georg Brandl79e3d552008-01-19 22:14:27 +0000443
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000444 The characters space, tab, colon and comma are ignored in format strings
445 (but not within format units such as ``s#``). This can be used to make
446 long format strings a tad more readable.
Georg Brandl79e3d552008-01-19 22:14:27 +0000447
448 ``s`` (string) [char \*]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000449 Convert a null-terminated C string to a Python object. If the C string
450 pointer is *NULL*, ``None`` is used.
Georg Brandl79e3d552008-01-19 22:14:27 +0000451
452 ``s#`` (string) [char \*, int]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000453 Convert a C string and its length to a Python object. If the C string
454 pointer is *NULL*, the length is ignored and ``None`` is returned.
Georg Brandl79e3d552008-01-19 22:14:27 +0000455
456 ``z`` (string or ``None``) [char \*]
457 Same as ``s``.
458
459 ``z#`` (string or ``None``) [char \*, int]
460 Same as ``s#``.
461
462 ``u`` (Unicode string) [Py_UNICODE \*]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000463 Convert a null-terminated buffer of Unicode (UCS-2 or UCS-4) data to a
464 Python Unicode object. If the Unicode buffer pointer is *NULL*,
465 ``None`` is returned.
Georg Brandl79e3d552008-01-19 22:14:27 +0000466
467 ``u#`` (Unicode string) [Py_UNICODE \*, int]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000468 Convert a Unicode (UCS-2 or UCS-4) data buffer and its length to a
469 Python Unicode object. If the Unicode buffer pointer is *NULL*, the
470 length is ignored and ``None`` is returned.
Georg Brandl79e3d552008-01-19 22:14:27 +0000471
472 ``i`` (integer) [int]
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100473 Convert a plain C :c:type:`int` to a Python integer object.
Georg Brandl79e3d552008-01-19 22:14:27 +0000474
475 ``b`` (integer) [char]
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100476 Convert a plain C :c:type:`char` to a Python integer object.
Georg Brandl79e3d552008-01-19 22:14:27 +0000477
478 ``h`` (integer) [short int]
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100479 Convert a plain C :c:type:`short int` to a Python integer object.
Georg Brandl79e3d552008-01-19 22:14:27 +0000480
481 ``l`` (integer) [long int]
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100482 Convert a C :c:type:`long int` to a Python integer object.
Georg Brandl79e3d552008-01-19 22:14:27 +0000483
484 ``B`` (integer) [unsigned char]
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100485 Convert a C :c:type:`unsigned char` to a Python integer object.
Georg Brandl79e3d552008-01-19 22:14:27 +0000486
487 ``H`` (integer) [unsigned short int]
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100488 Convert a C :c:type:`unsigned short int` to a Python integer object.
Georg Brandl79e3d552008-01-19 22:14:27 +0000489
490 ``I`` (integer/long) [unsigned int]
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100491 Convert a C :c:type:`unsigned int` to a Python integer object or a Python
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000492 long integer object, if it is larger than ``sys.maxint``.
Georg Brandl79e3d552008-01-19 22:14:27 +0000493
494 ``k`` (integer/long) [unsigned long]
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100495 Convert a C :c:type:`unsigned long` to a Python integer object or a
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000496 Python long integer object, if it is larger than ``sys.maxint``.
Georg Brandl79e3d552008-01-19 22:14:27 +0000497
498 ``L`` (long) [PY_LONG_LONG]
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100499 Convert a C :c:type:`long long` to a Python long integer object. Only
500 available on platforms that support :c:type:`long long`.
Georg Brandl79e3d552008-01-19 22:14:27 +0000501
502 ``K`` (long) [unsigned PY_LONG_LONG]
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100503 Convert a C :c:type:`unsigned long long` to a Python long integer object.
504 Only available on platforms that support :c:type:`unsigned long long`.
Georg Brandl79e3d552008-01-19 22:14:27 +0000505
506 ``n`` (int) [Py_ssize_t]
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100507 Convert a C :c:type:`Py_ssize_t` to a Python integer or long integer.
Georg Brandl79e3d552008-01-19 22:14:27 +0000508
509 .. versionadded:: 2.5
510
511 ``c`` (string of length 1) [char]
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100512 Convert a C :c:type:`int` representing a character to a Python string of
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000513 length 1.
Georg Brandl79e3d552008-01-19 22:14:27 +0000514
515 ``d`` (float) [double]
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100516 Convert a C :c:type:`double` to a Python floating point number.
Georg Brandl79e3d552008-01-19 22:14:27 +0000517
518 ``f`` (float) [float]
519 Same as ``d``.
520
521 ``D`` (complex) [Py_complex \*]
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100522 Convert a C :c:type:`Py_complex` structure to a Python complex number.
Georg Brandl79e3d552008-01-19 22:14:27 +0000523
524 ``O`` (object) [PyObject \*]
525 Pass a Python object untouched (except for its reference count, which is
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000526 incremented by one). If the object passed in is a *NULL* pointer, it is
527 assumed that this was caused because the call producing the argument
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100528 found an error and set an exception. Therefore, :c:func:`Py_BuildValue`
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000529 will return *NULL* but won't raise an exception. If no exception has
530 been raised yet, :exc:`SystemError` is set.
Georg Brandl79e3d552008-01-19 22:14:27 +0000531
532 ``S`` (object) [PyObject \*]
533 Same as ``O``.
534
535 ``N`` (object) [PyObject \*]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000536 Same as ``O``, except it doesn't increment the reference count on the
537 object. Useful when the object is created by a call to an object
538 constructor in the argument list.
Georg Brandl79e3d552008-01-19 22:14:27 +0000539
540 ``O&`` (object) [*converter*, *anything*]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000541 Convert *anything* to a Python object through a *converter* function.
542 The function is called with *anything* (which should be compatible with
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100543 :c:type:`void \*`) as its argument and should return a "new" Python
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000544 object, or *NULL* if an error occurred.
Georg Brandl79e3d552008-01-19 22:14:27 +0000545
546 ``(items)`` (tuple) [*matching-items*]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000547 Convert a sequence of C values to a Python tuple with the same number of
548 items.
Georg Brandl79e3d552008-01-19 22:14:27 +0000549
550 ``[items]`` (list) [*matching-items*]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000551 Convert a sequence of C values to a Python list with the same number of
552 items.
Georg Brandl79e3d552008-01-19 22:14:27 +0000553
554 ``{items}`` (dictionary) [*matching-items*]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000555 Convert a sequence of C values to a Python dictionary. Each pair of
556 consecutive C values adds one item to the dictionary, serving as key and
557 value, respectively.
Georg Brandl79e3d552008-01-19 22:14:27 +0000558
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000559 If there is an error in the format string, the :exc:`SystemError` exception
560 is set and *NULL* returned.
Alexandre Vassalottie7d1e7e2008-12-28 02:58:22 +0000561
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100562.. c:function:: PyObject* Py_VaBuildValue(const char *format, va_list vargs)
Alexandre Vassalottie7d1e7e2008-12-28 02:58:22 +0000563
Sandro Tosi98ed08f2012-01-14 16:42:02 +0100564 Identical to :c:func:`Py_BuildValue`, except that it accepts a va_list
Alexandre Vassalottie7d1e7e2008-12-28 02:58:22 +0000565 rather than a variable number of arguments.