blob: 6599d82fab2e04620e4e01b2eba064d7ef4f923c [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
12The first three of these functions described, :cfunc:`PyArg_ParseTuple`,
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +000013:cfunc:`PyArg_ParseTupleAndKeywords`, and :cfunc:`PyArg_Parse`, all use
14*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
Victor Stinnerf70c5812010-04-03 08:40:16 +000027``s`` (string or Unicode) [const char \*]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +000028 Convert a Python string or Unicode object to a C pointer to a character
29 string. You must not provide storage for the string itself; a pointer to
30 an existing string is stored into the character pointer variable whose
31 address you pass. The C string is NUL-terminated. The Python string must
32 not contain embedded NUL bytes; if it does, a :exc:`TypeError` exception is
33 raised. Unicode objects are converted to C strings using the default
34 encoding. If this conversion fails, a :exc:`UnicodeError` is raised.
Georg Brandl79e3d552008-01-19 22:14:27 +000035
Gregory P. Smithb07bd102008-11-24 00:41:43 +000036``s#`` (string, Unicode or any read buffer compatible object) [const char \*, int (or :ctype:`Py_ssize_t`, see below)]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +000037 This variant on ``s`` stores into two C variables, the first one a pointer
38 to a character string, the second one its length. In this case the Python
39 string may contain embedded null bytes. Unicode objects pass back a
40 pointer to the default encoded string version of the object if such a
41 conversion is possible. All other read-buffer compatible objects pass back
42 a reference to the raw internal data representation.
Georg Brandl79e3d552008-01-19 22:14:27 +000043
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +000044 Starting with Python 2.5 the type of the length argument can be controlled
45 by defining the macro :cmacro:`PY_SSIZE_T_CLEAN` before including
46 :file:`Python.h`. If the macro is defined, length is a :ctype:`Py_ssize_t`
47 rather than an int.
Gregory P. Smithb07bd102008-11-24 00:41:43 +000048
Gregory P. Smithb56fb122010-01-02 21:29:54 +000049``s*`` (string, Unicode, or any buffer compatible object) [Py_buffer]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +000050 Similar to ``s#``, this code fills a Py_buffer structure provided by the
51 caller. The buffer gets locked, so that the caller can subsequently use
52 the buffer even inside a ``Py_BEGIN_ALLOW_THREADS`` block; the caller is
53 responsible for calling ``PyBuffer_Release`` with the structure after it
54 has processed the data.
Martin v. Löwisf91d46a2008-08-12 14:49:50 +000055
Georg Brandlfc29f272009-01-02 20:25:14 +000056 .. versionadded:: 2.6
Martin v. Löwisf91d46a2008-08-12 14:49:50 +000057
Victor Stinnerf70c5812010-04-03 08:40:16 +000058``z`` (string, Unicode or ``None``) [const char \*]
Georg Brandl79e3d552008-01-19 22:14:27 +000059 Like ``s``, but the Python object may also be ``None``, in which case the C
60 pointer is set to *NULL*.
61
Victor Stinnerf70c5812010-04-03 08:40:16 +000062``z#`` (string, Unicode, ``None`` or any read buffer compatible object) [const char \*, int]
Georg Brandl79e3d552008-01-19 22:14:27 +000063 This is to ``s#`` as ``z`` is to ``s``.
64
Victor Stinnerf70c5812010-04-03 08:40:16 +000065``z*`` (string, Unicode, ``None`` or any buffer compatible object) [Py_buffer]
Martin v. Löwisf91d46a2008-08-12 14:49:50 +000066 This is to ``s*`` as ``z`` is to ``s``.
Benjamin Peterson4eb99392008-08-16 03:02:41 +000067
Georg Brandlfc29f272009-01-02 20:25:14 +000068 .. versionadded:: 2.6
Martin v. Löwisf91d46a2008-08-12 14:49:50 +000069
Victor Stinnerf70c5812010-04-03 08:40:16 +000070``u`` (Unicode) [Py_UNICODE \*]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +000071 Convert a Python Unicode object to a C pointer to a NUL-terminated buffer
72 of 16-bit Unicode (UTF-16) data. As with ``s``, there is no need to
73 provide storage for the Unicode data buffer; a pointer to the existing
74 Unicode data is stored into the :ctype:`Py_UNICODE` pointer variable whose
75 address you pass.
Georg Brandl79e3d552008-01-19 22:14:27 +000076
Victor Stinnerf70c5812010-04-03 08:40:16 +000077``u#`` (Unicode) [Py_UNICODE \*, int]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +000078 This variant on ``u`` stores into two C variables, the first one a pointer
79 to a Unicode data buffer, the second one its length. Non-Unicode objects
80 are handled by interpreting their read-buffer pointer as pointer to a
81 :ctype:`Py_UNICODE` array.
Georg Brandl79e3d552008-01-19 22:14:27 +000082
Victor Stinnerf70c5812010-04-03 08:40:16 +000083``es`` (string, Unicode or character buffer compatible object) [const char \*encoding, char \*\*buffer]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +000084 This variant on ``s`` is used for encoding Unicode and objects convertible
85 to Unicode into a character buffer. It only works for encoded data without
86 embedded NUL bytes.
Georg Brandl79e3d552008-01-19 22:14:27 +000087
88 This format requires two arguments. The first is only used as input, and
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +000089 must be a :ctype:`const char\*` which points to the name of an encoding as
90 a NUL-terminated string, or *NULL*, in which case the default encoding is
91 used. An exception is raised if the named encoding is not known to Python.
92 The second argument must be a :ctype:`char\*\*`; the value of the pointer
93 it references will be set to a buffer with the contents of the argument
94 text. The text will be encoded in the encoding specified by the first
95 argument.
Georg Brandl79e3d552008-01-19 22:14:27 +000096
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +000097 :cfunc:`PyArg_ParseTuple` will allocate a buffer of the needed size, copy
98 the encoded data into this buffer and adjust *\*buffer* to reference the
99 newly allocated storage. The caller is responsible for calling
100 :cfunc:`PyMem_Free` to free the allocated buffer after use.
Georg Brandl79e3d552008-01-19 22:14:27 +0000101
Victor Stinnerf70c5812010-04-03 08:40:16 +0000102``et`` (string, Unicode or character buffer compatible object) [const char \*encoding, char \*\*buffer]
Georg Brandl79e3d552008-01-19 22:14:27 +0000103 Same as ``es`` except that 8-bit string objects are passed through without
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000104 recoding them. Instead, the implementation assumes that the string object
105 uses the encoding passed in as parameter.
Georg Brandl79e3d552008-01-19 22:14:27 +0000106
Victor Stinnerf70c5812010-04-03 08:40:16 +0000107``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 +0000108 This variant on ``s#`` is used for encoding Unicode and objects convertible
109 to Unicode into a character buffer. Unlike the ``es`` format, this variant
110 allows input data which contains NUL characters.
Georg Brandl79e3d552008-01-19 22:14:27 +0000111
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000112 It requires three arguments. The first is only used as input, and must be
113 a :ctype:`const char\*` which points to the name of an encoding as a
114 NUL-terminated string, or *NULL*, in which case the default encoding is
115 used. An exception is raised if the named encoding is not known to Python.
116 The second argument must be a :ctype:`char\*\*`; the value of the pointer
117 it references will be set to a buffer with the contents of the argument
118 text. The text will be encoded in the encoding specified by the first
119 argument. The third argument must be a pointer to an integer; the
120 referenced integer will be set to the number of bytes in the output buffer.
Georg Brandl79e3d552008-01-19 22:14:27 +0000121
122 There are two modes of operation:
123
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000124 If *\*buffer* points a *NULL* pointer, the function will allocate a buffer
125 of the needed size, copy the encoded data into this buffer and set
126 *\*buffer* to reference the newly allocated storage. The caller is
127 responsible for calling :cfunc:`PyMem_Free` to free the allocated buffer
128 after usage.
Georg Brandl79e3d552008-01-19 22:14:27 +0000129
130 If *\*buffer* points to a non-*NULL* pointer (an already allocated buffer),
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000131 :cfunc:`PyArg_ParseTuple` will use this location as the buffer and
132 interpret the initial value of *\*buffer_length* as the buffer size. It
133 will then copy the encoded data into the buffer and NUL-terminate it. If
134 the buffer is not large enough, a :exc:`ValueError` will be set.
Georg Brandl79e3d552008-01-19 22:14:27 +0000135
136 In both cases, *\*buffer_length* is set to the length of the encoded data
137 without the trailing NUL byte.
138
Victor Stinnerf70c5812010-04-03 08:40:16 +0000139``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 +0000140 Same as ``es#`` except that string objects are passed through without
141 recoding them. Instead, the implementation assumes that the string object
142 uses the encoding passed in as parameter.
Georg Brandl79e3d552008-01-19 22:14:27 +0000143
Georg Brandl50ae9e72008-12-27 19:02:59 +0000144``b`` (integer) [unsigned char]
145 Convert a nonnegative Python integer to an unsigned tiny int, stored in a C
146 :ctype:`unsigned char`.
Georg Brandl79e3d552008-01-19 22:14:27 +0000147
148``B`` (integer) [unsigned char]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000149 Convert a Python integer to a tiny int without overflow checking, stored in
150 a C :ctype:`unsigned char`.
Georg Brandl79e3d552008-01-19 22:14:27 +0000151
152 .. versionadded:: 2.3
153
154``h`` (integer) [short int]
155 Convert a Python integer to a C :ctype:`short int`.
156
157``H`` (integer) [unsigned short int]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000158 Convert a Python integer to a C :ctype:`unsigned short int`, without
159 overflow checking.
Georg Brandl79e3d552008-01-19 22:14:27 +0000160
161 .. versionadded:: 2.3
162
163``i`` (integer) [int]
164 Convert a Python integer to a plain C :ctype:`int`.
165
166``I`` (integer) [unsigned int]
167 Convert a Python integer to a C :ctype:`unsigned int`, without overflow
168 checking.
169
170 .. versionadded:: 2.3
171
172``l`` (integer) [long int]
173 Convert a Python integer to a C :ctype:`long int`.
174
175``k`` (integer) [unsigned long]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000176 Convert a Python integer or long integer to a C :ctype:`unsigned long`
177 without overflow checking.
Georg Brandl79e3d552008-01-19 22:14:27 +0000178
179 .. versionadded:: 2.3
180
181``L`` (integer) [PY_LONG_LONG]
182 Convert a Python integer to a C :ctype:`long long`. This format is only
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000183 available on platforms that support :ctype:`long long` (or :ctype:`_int64`
184 on Windows).
Georg Brandl79e3d552008-01-19 22:14:27 +0000185
186``K`` (integer) [unsigned PY_LONG_LONG]
187 Convert a Python integer or long integer to a C :ctype:`unsigned long long`
188 without overflow checking. This format is only available on platforms that
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000189 support :ctype:`unsigned long long` (or :ctype:`unsigned _int64` on
190 Windows).
Georg Brandl79e3d552008-01-19 22:14:27 +0000191
192 .. versionadded:: 2.3
193
194``n`` (integer) [Py_ssize_t]
195 Convert a Python integer or long integer to a C :ctype:`Py_ssize_t`.
196
197 .. versionadded:: 2.5
198
199``c`` (string of length 1) [char]
200 Convert a Python character, represented as a string of length 1, to a C
201 :ctype:`char`.
202
203``f`` (float) [float]
204 Convert a Python floating point number to a C :ctype:`float`.
205
206``d`` (float) [double]
207 Convert a Python floating point number to a C :ctype:`double`.
208
209``D`` (complex) [Py_complex]
210 Convert a Python complex number to a C :ctype:`Py_complex` structure.
211
212``O`` (object) [PyObject \*]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000213 Store a Python object (without any conversion) in a C object pointer. The
214 C program thus receives the actual object that was passed. The object's
215 reference count is not increased. The pointer stored is not *NULL*.
Georg Brandl79e3d552008-01-19 22:14:27 +0000216
217``O!`` (object) [*typeobject*, PyObject \*]
218 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 +0000219 takes two C arguments: the first is the address of a Python type object,
220 the second is the address of the C variable (of type :ctype:`PyObject\*`)
221 into which the object pointer is stored. If the Python object does not
222 have the required type, :exc:`TypeError` is raised.
Georg Brandl79e3d552008-01-19 22:14:27 +0000223
224``O&`` (object) [*converter*, *anything*]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000225 Convert a Python object to a C variable through a *converter* function.
226 This takes two arguments: the first is a function, the second is the
227 address of a C variable (of arbitrary type), converted to :ctype:`void \*`.
228 The *converter* function in turn is called as follows::
Georg Brandl79e3d552008-01-19 22:14:27 +0000229
230 status = converter(object, address);
231
232 where *object* is the Python object to be converted and *address* is the
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000233 :ctype:`void\*` argument that was passed to the :cfunc:`PyArg_Parse\*`
234 function. The returned *status* should be ``1`` for a successful
235 conversion and ``0`` if the conversion has failed. When the conversion
236 fails, the *converter* function should raise an exception and leave the
237 content of *address* unmodified.
Georg Brandl79e3d552008-01-19 22:14:27 +0000238
239``S`` (string) [PyStringObject \*]
240 Like ``O`` but requires that the Python object is a string object. Raises
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000241 :exc:`TypeError` if the object is not a string object. The C variable may
242 also be declared as :ctype:`PyObject\*`.
Georg Brandl79e3d552008-01-19 22:14:27 +0000243
244``U`` (Unicode string) [PyUnicodeObject \*]
245 Like ``O`` but requires that the Python object is a Unicode object. Raises
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000246 :exc:`TypeError` if the object is not a Unicode object. The C variable may
247 also be declared as :ctype:`PyObject\*`.
Georg Brandl79e3d552008-01-19 22:14:27 +0000248
249``t#`` (read-only character buffer) [char \*, int]
250 Like ``s#``, but accepts any object which implements the read-only buffer
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000251 interface. The :ctype:`char\*` variable is set to point to the first byte
252 of the buffer, and the :ctype:`int` is set to the length of the buffer.
253 Only single-segment buffer objects are accepted; :exc:`TypeError` is raised
254 for all others.
Georg Brandl79e3d552008-01-19 22:14:27 +0000255
256``w`` (read-write character buffer) [char \*]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000257 Similar to ``s``, but accepts any object which implements the read-write
258 buffer interface. The caller must determine the length of the buffer by
259 other means, or use ``w#`` instead. Only single-segment buffer objects are
260 accepted; :exc:`TypeError` is raised for all others.
Georg Brandl79e3d552008-01-19 22:14:27 +0000261
Christian Heimesc70e5f92008-11-30 21:16:28 +0000262``w#`` (read-write character buffer) [char \*, Py_ssize_t]
Georg Brandl79e3d552008-01-19 22:14:27 +0000263 Like ``s#``, but accepts any object which implements the read-write buffer
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000264 interface. The :ctype:`char \*` variable is set to point to the first byte
Jeroen Ruigrok van der Wervenc2aa7b82009-04-25 18:57:32 +0000265 of the buffer, and the :ctype:`Py_ssize_t` is set to the length of the
266 buffer. Only single-segment buffer objects are accepted; :exc:`TypeError`
267 is raised for all others.
Georg Brandl79e3d552008-01-19 22:14:27 +0000268
Gregory P. Smithb56fb122010-01-02 21:29:54 +0000269``w*`` (read-write byte-oriented buffer) [Py_buffer]
Martin v. Löwisf91d46a2008-08-12 14:49:50 +0000270 This is to ``w`` what ``s*`` is to ``s``.
Georg Brandlfc29f272009-01-02 20:25:14 +0000271
Martin v. Löwisf91d46a2008-08-12 14:49:50 +0000272 .. versionadded:: 2.6
273
Georg Brandl79e3d552008-01-19 22:14:27 +0000274``(items)`` (tuple) [*matching-items*]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000275 The object must be a Python sequence whose length is the number of format
276 units in *items*. The C arguments must correspond to the individual format
277 units in *items*. Format units for sequences may be nested.
Georg Brandl79e3d552008-01-19 22:14:27 +0000278
279 .. note::
280
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000281 Prior to Python version 1.5.2, this format specifier only accepted a
282 tuple containing the individual parameters, not an arbitrary sequence.
283 Code which previously caused :exc:`TypeError` to be raised here may now
284 proceed without an exception. This is not expected to be a problem for
285 existing code.
Georg Brandl79e3d552008-01-19 22:14:27 +0000286
287It is possible to pass Python long integers where integers are requested;
288however no proper range checking is done --- the most significant bits are
289silently truncated when the receiving field is too small to receive the value
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000290(actually, the semantics are inherited from downcasts in C --- your mileage
291may vary).
Georg Brandl79e3d552008-01-19 22:14:27 +0000292
293A few other characters have a meaning in a format string. These may not occur
294inside nested parentheses. They are:
295
296``|``
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000297 Indicates that the remaining arguments in the Python argument list are
298 optional. The C variables corresponding to optional arguments should be
299 initialized to their default value --- when an optional argument is not
300 specified, :cfunc:`PyArg_ParseTuple` does not touch the contents of the
301 corresponding C variable(s).
Georg Brandl79e3d552008-01-19 22:14:27 +0000302
303``:``
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000304 The list of format units ends here; the string after the colon is used as
305 the function name in error messages (the "associated value" of the
306 exception that :cfunc:`PyArg_ParseTuple` raises).
Georg Brandl79e3d552008-01-19 22:14:27 +0000307
308``;``
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000309 The list of format units ends here; the string after the semicolon is used
310 as the error message *instead* of the default error message. ``:`` and
311 ``;`` mutually exclude each other.
Georg Brandl79e3d552008-01-19 22:14:27 +0000312
313Note that any Python object references which are provided to the caller are
314*borrowed* references; do not decrement their reference count!
315
316Additional arguments passed to these functions must be addresses of variables
317whose type is determined by the format string; these are used to store values
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000318from the input tuple. There are a few cases, as described in the list of
319format units above, where these parameters are used as input values; they
320should match what is specified for the corresponding format unit in that case.
Georg Brandl79e3d552008-01-19 22:14:27 +0000321
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000322For the conversion to succeed, the *arg* object must match the format and the
323format must be exhausted. On success, the :cfunc:`PyArg_Parse\*` functions
324return true, otherwise they return false and raise an appropriate exception.
325When the :cfunc:`PyArg_Parse\*` functions fail due to conversion failure in
326one of the format units, the variables at the addresses corresponding to that
Georg Brandlfd6cabf2008-03-04 07:33:30 +0000327and the following format units are left untouched.
Georg Brandl79e3d552008-01-19 22:14:27 +0000328
329
330.. cfunction:: int PyArg_ParseTuple(PyObject *args, const char *format, ...)
331
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000332 Parse the parameters of a function that takes only positional parameters
333 into local variables. Returns true on success; on failure, it returns
334 false and raises the appropriate exception.
Georg Brandl79e3d552008-01-19 22:14:27 +0000335
336
337.. cfunction:: int PyArg_VaParse(PyObject *args, const char *format, va_list vargs)
338
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000339 Identical to :cfunc:`PyArg_ParseTuple`, except that it accepts a va_list
340 rather than a variable number of arguments.
Georg Brandl79e3d552008-01-19 22:14:27 +0000341
342
343.. cfunction:: int PyArg_ParseTupleAndKeywords(PyObject *args, PyObject *kw, const char *format, char *keywords[], ...)
344
345 Parse the parameters of a function that takes both positional and keyword
346 parameters into local variables. Returns true on success; on failure, it
347 returns false and raises the appropriate exception.
348
349
350.. cfunction:: int PyArg_VaParseTupleAndKeywords(PyObject *args, PyObject *kw, const char *format, char *keywords[], va_list vargs)
351
352 Identical to :cfunc:`PyArg_ParseTupleAndKeywords`, except that it accepts a
353 va_list rather than a variable number of arguments.
354
355
356.. cfunction:: int PyArg_Parse(PyObject *args, const char *format, ...)
357
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000358 Function used to deconstruct the argument lists of "old-style" functions
359 --- these are functions which use the :const:`METH_OLDARGS` parameter
360 parsing method. This is not recommended for use in parameter parsing in
361 new code, and most code in the standard interpreter has been modified to no
362 longer use this for that purpose. It does remain a convenient way to
363 decompose other tuples, however, and may continue to be used for that
364 purpose.
Georg Brandl79e3d552008-01-19 22:14:27 +0000365
366
367.. cfunction:: int PyArg_UnpackTuple(PyObject *args, const char *name, Py_ssize_t min, Py_ssize_t max, ...)
368
369 A simpler form of parameter retrieval which does not use a format string to
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000370 specify the types of the arguments. Functions which use this method to
371 retrieve their parameters should be declared as :const:`METH_VARARGS` in
372 function or method tables. The tuple containing the actual parameters
373 should be passed as *args*; it must actually be a tuple. The length of the
374 tuple must be at least *min* and no more than *max*; *min* and *max* may be
375 equal. Additional arguments must be passed to the function, each of which
376 should be a pointer to a :ctype:`PyObject\*` variable; these will be filled
377 in with the values from *args*; they will contain borrowed references. The
378 variables which correspond to optional parameters not given by *args* will
379 not be filled in; these should be initialized by the caller. This function
380 returns true on success and false if *args* is not a tuple or contains the
381 wrong number of elements; an exception will be set if there was a failure.
Georg Brandl79e3d552008-01-19 22:14:27 +0000382
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000383 This is an example of the use of this function, taken from the sources for
384 the :mod:`_weakref` helper module for weak references::
Georg Brandl79e3d552008-01-19 22:14:27 +0000385
386 static PyObject *
387 weakref_ref(PyObject *self, PyObject *args)
388 {
389 PyObject *object;
390 PyObject *callback = NULL;
391 PyObject *result = NULL;
392
393 if (PyArg_UnpackTuple(args, "ref", 1, 2, &object, &callback)) {
394 result = PyWeakref_NewRef(object, callback);
395 }
396 return result;
397 }
398
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000399 The call to :cfunc:`PyArg_UnpackTuple` in this example is entirely
400 equivalent to this call to :cfunc:`PyArg_ParseTuple`::
Georg Brandl79e3d552008-01-19 22:14:27 +0000401
402 PyArg_ParseTuple(args, "O|O:ref", &object, &callback)
403
404 .. versionadded:: 2.2
405
Jeroen Ruigrok van der Werven089c5cd2009-04-25 17:59:03 +0000406 .. versionchanged:: 2.5
407 This function used an :ctype:`int` type for *min* and *max*. This might
408 require changes in your code for properly supporting 64-bit systems.
409
Georg Brandl79e3d552008-01-19 22:14:27 +0000410
411.. cfunction:: PyObject* Py_BuildValue(const char *format, ...)
412
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000413 Create a new value based on a format string similar to those accepted by
414 the :cfunc:`PyArg_Parse\*` family of functions and a sequence of values.
415 Returns the value or *NULL* in the case of an error; an exception will be
416 raised if *NULL* is returned.
Georg Brandl79e3d552008-01-19 22:14:27 +0000417
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000418 :cfunc:`Py_BuildValue` does not always build a tuple. It builds a tuple
419 only if its format string contains two or more format units. If the format
420 string is empty, it returns ``None``; if it contains exactly one format
421 unit, it returns whatever object is described by that format unit. To
422 force it to return a tuple of size 0 or one, parenthesize the format
423 string.
Georg Brandl79e3d552008-01-19 22:14:27 +0000424
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000425 When memory buffers are passed as parameters to supply data to build
426 objects, as for the ``s`` and ``s#`` formats, the required data is copied.
427 Buffers provided by the caller are never referenced by the objects created
428 by :cfunc:`Py_BuildValue`. In other words, if your code invokes
429 :cfunc:`malloc` and passes the allocated memory to :cfunc:`Py_BuildValue`,
430 your code is responsible for calling :cfunc:`free` for that memory once
Georg Brandl79e3d552008-01-19 22:14:27 +0000431 :cfunc:`Py_BuildValue` returns.
432
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000433 In the following description, the quoted form is the format unit; the entry
434 in (round) parentheses is the Python object type that the format unit will
435 return; and the entry in [square] brackets is the type of the C value(s) to
436 be passed.
Georg Brandl79e3d552008-01-19 22:14:27 +0000437
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000438 The characters space, tab, colon and comma are ignored in format strings
439 (but not within format units such as ``s#``). This can be used to make
440 long format strings a tad more readable.
Georg Brandl79e3d552008-01-19 22:14:27 +0000441
442 ``s`` (string) [char \*]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000443 Convert a null-terminated C string to a Python object. If the C string
444 pointer is *NULL*, ``None`` is used.
Georg Brandl79e3d552008-01-19 22:14:27 +0000445
446 ``s#`` (string) [char \*, int]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000447 Convert a C string and its length to a Python object. If the C string
448 pointer is *NULL*, the length is ignored and ``None`` is returned.
Georg Brandl79e3d552008-01-19 22:14:27 +0000449
450 ``z`` (string or ``None``) [char \*]
451 Same as ``s``.
452
453 ``z#`` (string or ``None``) [char \*, int]
454 Same as ``s#``.
455
456 ``u`` (Unicode string) [Py_UNICODE \*]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000457 Convert a null-terminated buffer of Unicode (UCS-2 or UCS-4) data to a
458 Python Unicode object. If the Unicode buffer pointer is *NULL*,
459 ``None`` is returned.
Georg Brandl79e3d552008-01-19 22:14:27 +0000460
461 ``u#`` (Unicode string) [Py_UNICODE \*, int]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000462 Convert a Unicode (UCS-2 or UCS-4) data buffer and its length to a
463 Python Unicode object. If the Unicode buffer pointer is *NULL*, the
464 length is ignored and ``None`` is returned.
Georg Brandl79e3d552008-01-19 22:14:27 +0000465
466 ``i`` (integer) [int]
467 Convert a plain C :ctype:`int` to a Python integer object.
468
469 ``b`` (integer) [char]
470 Convert a plain C :ctype:`char` to a Python integer object.
471
472 ``h`` (integer) [short int]
473 Convert a plain C :ctype:`short int` to a Python integer object.
474
475 ``l`` (integer) [long int]
476 Convert a C :ctype:`long int` to a Python integer object.
477
478 ``B`` (integer) [unsigned char]
479 Convert a C :ctype:`unsigned char` to a Python integer object.
480
481 ``H`` (integer) [unsigned short int]
482 Convert a C :ctype:`unsigned short int` to a Python integer object.
483
484 ``I`` (integer/long) [unsigned int]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000485 Convert a C :ctype:`unsigned int` to a Python integer object or a Python
486 long integer object, if it is larger than ``sys.maxint``.
Georg Brandl79e3d552008-01-19 22:14:27 +0000487
488 ``k`` (integer/long) [unsigned long]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000489 Convert a C :ctype:`unsigned long` to a Python integer object or a
490 Python long integer object, if it is larger than ``sys.maxint``.
Georg Brandl79e3d552008-01-19 22:14:27 +0000491
492 ``L`` (long) [PY_LONG_LONG]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000493 Convert a C :ctype:`long long` to a Python long integer object. Only
494 available on platforms that support :ctype:`long long`.
Georg Brandl79e3d552008-01-19 22:14:27 +0000495
496 ``K`` (long) [unsigned PY_LONG_LONG]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000497 Convert a C :ctype:`unsigned long long` to a Python long integer object.
498 Only available on platforms that support :ctype:`unsigned long long`.
Georg Brandl79e3d552008-01-19 22:14:27 +0000499
500 ``n`` (int) [Py_ssize_t]
501 Convert a C :ctype:`Py_ssize_t` to a Python integer or long integer.
502
503 .. versionadded:: 2.5
504
505 ``c`` (string of length 1) [char]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000506 Convert a C :ctype:`int` representing a character to a Python string of
507 length 1.
Georg Brandl79e3d552008-01-19 22:14:27 +0000508
509 ``d`` (float) [double]
510 Convert a C :ctype:`double` to a Python floating point number.
511
512 ``f`` (float) [float]
513 Same as ``d``.
514
515 ``D`` (complex) [Py_complex \*]
516 Convert a C :ctype:`Py_complex` structure to a Python complex number.
517
518 ``O`` (object) [PyObject \*]
519 Pass a Python object untouched (except for its reference count, which is
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000520 incremented by one). If the object passed in is a *NULL* pointer, it is
521 assumed that this was caused because the call producing the argument
522 found an error and set an exception. Therefore, :cfunc:`Py_BuildValue`
523 will return *NULL* but won't raise an exception. If no exception has
524 been raised yet, :exc:`SystemError` is set.
Georg Brandl79e3d552008-01-19 22:14:27 +0000525
526 ``S`` (object) [PyObject \*]
527 Same as ``O``.
528
529 ``N`` (object) [PyObject \*]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000530 Same as ``O``, except it doesn't increment the reference count on the
531 object. Useful when the object is created by a call to an object
532 constructor in the argument list.
Georg Brandl79e3d552008-01-19 22:14:27 +0000533
534 ``O&`` (object) [*converter*, *anything*]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000535 Convert *anything* to a Python object through a *converter* function.
536 The function is called with *anything* (which should be compatible with
537 :ctype:`void \*`) as its argument and should return a "new" Python
538 object, or *NULL* if an error occurred.
Georg Brandl79e3d552008-01-19 22:14:27 +0000539
540 ``(items)`` (tuple) [*matching-items*]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000541 Convert a sequence of C values to a Python tuple with the same number of
542 items.
Georg Brandl79e3d552008-01-19 22:14:27 +0000543
544 ``[items]`` (list) [*matching-items*]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000545 Convert a sequence of C values to a Python list with the same number of
546 items.
Georg Brandl79e3d552008-01-19 22:14:27 +0000547
548 ``{items}`` (dictionary) [*matching-items*]
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000549 Convert a sequence of C values to a Python dictionary. Each pair of
550 consecutive C values adds one item to the dictionary, serving as key and
551 value, respectively.
Georg Brandl79e3d552008-01-19 22:14:27 +0000552
Jeroen Ruigrok van der Werven140d9d62009-04-25 13:58:58 +0000553 If there is an error in the format string, the :exc:`SystemError` exception
554 is set and *NULL* returned.
Alexandre Vassalottie7d1e7e2008-12-28 02:58:22 +0000555
556.. cfunction:: PyObject* Py_VaBuildValue(const char *format, va_list vargs)
557
558 Identical to :cfunc:`Py_BuildValue`, except that it accepts a va_list
559 rather than a variable number of arguments.