• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1.. highlight:: 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, :c:func:`PyArg_ParseTuple`,
13:c:func:`PyArg_ParseTupleAndKeywords`, and :c:func:`PyArg_Parse`, all use *format
14strings* which are used to tell the function about the expected arguments.  The
15format strings use the same syntax for each of these functions.
16
17-----------------
18Parsing arguments
19-----------------
20
21A 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
30Strings and buffers
31-------------------
32
33These formats allow accessing an object as a contiguous chunk of memory.
34You don't have to provide raw storage for the returned unicode or bytes
35area.
36
37In general, when a format sets a pointer to a buffer, the buffer is
38managed by the corresponding Python object, and the buffer shares
39the lifetime of this object.  You won't have to release any memory yourself.
40The only exceptions are ``es``, ``es#``, ``et`` and ``et#``.
41
42However, when a :c:type:`Py_buffer` structure gets filled, the underlying
43buffer is locked so that the caller can subsequently use the buffer even
44inside a :c:type:`Py_BEGIN_ALLOW_THREADS` block without the risk of mutable data
45being resized or destroyed.  As a result, **you have to call**
46:c:func:`PyBuffer_Release` after you have finished processing the data (or
47in any early abort case).
48
49Unless otherwise stated, buffers are not NUL-terminated.
50
51Some formats require a read-only :term:`bytes-like object`, and set a
52pointer instead of a buffer structure.  They work by checking that
53the object's :c:member:`PyBufferProcs.bf_releasebuffer` field is ``NULL``,
54which disallows mutable objects such as :class:`bytearray`.
55
56.. note::
57
58   For all ``#`` variants of formats (``s#``, ``y#``, etc.), the macro
59   :c:macro:`PY_SSIZE_T_CLEAN` must be defined before including
60   :file:`Python.h`. On Python 3.9 and older, the type of the length argument
61   is :c:type:`Py_ssize_t` if the :c:macro:`PY_SSIZE_T_CLEAN` macro is defined,
62   or int otherwise.
63
64
65``s`` (:class:`str`) [const char \*]
66   Convert a Unicode object to a C pointer to a character string.
67   A pointer to an existing string is stored in the character pointer
68   variable whose address you pass.  The C string is NUL-terminated.
69   The Python string must not contain embedded null code points; if it does,
70   a :exc:`ValueError` exception is raised. Unicode objects are converted
71   to C strings using ``'utf-8'`` encoding. If this conversion fails, a
72   :exc:`UnicodeError` is raised.
73
74   .. note::
75      This format does not accept :term:`bytes-like objects
76      <bytes-like object>`.  If you want to accept
77      filesystem paths and convert them to C character strings, it is
78      preferable to use the ``O&`` format with :c:func:`PyUnicode_FSConverter`
79      as *converter*.
80
81   .. versionchanged:: 3.5
82      Previously, :exc:`TypeError` was raised when embedded null code points
83      were encountered in the Python string.
84
85``s*`` (:class:`str` or :term:`bytes-like object`) [Py_buffer]
86   This format accepts Unicode objects as well as bytes-like objects.
87   It fills a :c:type:`Py_buffer` structure provided by the caller.
88   In this case the resulting C string may contain embedded NUL bytes.
89   Unicode objects are converted to C strings using ``'utf-8'`` encoding.
90
91``s#`` (:class:`str`, read-only :term:`bytes-like object`) [const char \*, :c:type:`Py_ssize_t`]
92   Like ``s*``, except that it doesn't accept mutable objects.
93   The result is stored into two C variables,
94   the first one a pointer to a C string, the second one its length.
95   The string may contain embedded null bytes. Unicode objects are converted
96   to C strings using ``'utf-8'`` encoding.
97
98``z`` (:class:`str` or ``None``) [const char \*]
99   Like ``s``, but the Python object may also be ``None``, in which case the C
100   pointer is set to ``NULL``.
101
102``z*`` (:class:`str`, :term:`bytes-like object` or ``None``) [Py_buffer]
103   Like ``s*``, but the Python object may also be ``None``, in which case the
104   ``buf`` member of the :c:type:`Py_buffer` structure is set to ``NULL``.
105
106``z#`` (:class:`str`, read-only :term:`bytes-like object` or ``None``) [const char \*, :c:type:`Py_ssize_t`]
107   Like ``s#``, but the Python object may also be ``None``, in which case the C
108   pointer is set to ``NULL``.
109
110``y`` (read-only :term:`bytes-like object`) [const char \*]
111   This format converts a bytes-like object to a C pointer to a character
112   string; it does not accept Unicode objects.  The bytes buffer must not
113   contain embedded null bytes; if it does, a :exc:`ValueError`
114   exception is raised.
115
116   .. versionchanged:: 3.5
117      Previously, :exc:`TypeError` was raised when embedded null bytes were
118      encountered in the bytes buffer.
119
120``y*`` (:term:`bytes-like object`) [Py_buffer]
121   This variant on ``s*`` doesn't accept Unicode objects, only
122   bytes-like objects.  **This is the recommended way to accept
123   binary data.**
124
125``y#`` (read-only :term:`bytes-like object`) [const char \*, :c:type:`Py_ssize_t`]
126   This variant on ``s#`` doesn't accept Unicode objects, only bytes-like
127   objects.
128
129``S`` (:class:`bytes`) [PyBytesObject \*]
130   Requires that the Python object is a :class:`bytes` object, without
131   attempting any conversion.  Raises :exc:`TypeError` if the object is not
132   a bytes object.  The C variable may also be declared as :c:type:`PyObject*`.
133
134``Y`` (:class:`bytearray`) [PyByteArrayObject \*]
135   Requires that the Python object is a :class:`bytearray` object, without
136   attempting any conversion.  Raises :exc:`TypeError` if the object is not
137   a :class:`bytearray` object. The C variable may also be declared as :c:type:`PyObject*`.
138
139``u`` (:class:`str`) [const Py_UNICODE \*]
140   Convert a Python Unicode object to a C pointer to a NUL-terminated buffer of
141   Unicode characters.  You must pass the address of a :c:type:`Py_UNICODE`
142   pointer variable, which will be filled with the pointer to an existing
143   Unicode buffer.  Please note that the width of a :c:type:`Py_UNICODE`
144   character depends on compilation options (it is either 16 or 32 bits).
145   The Python string must not contain embedded null code points; if it does,
146   a :exc:`ValueError` exception is raised.
147
148   .. versionchanged:: 3.5
149      Previously, :exc:`TypeError` was raised when embedded null code points
150      were encountered in the Python string.
151
152   .. deprecated-removed:: 3.3 3.12
153      Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using
154      :c:func:`PyUnicode_AsWideCharString`.
155
156``u#`` (:class:`str`) [const Py_UNICODE \*, :c:type:`Py_ssize_t`]
157   This variant on ``u`` stores into two C variables, the first one a pointer to a
158   Unicode data buffer, the second one its length.  This variant allows
159   null code points.
160
161   .. deprecated-removed:: 3.3 3.12
162      Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using
163      :c:func:`PyUnicode_AsWideCharString`.
164
165``Z`` (:class:`str` or ``None``) [const Py_UNICODE \*]
166   Like ``u``, but the Python object may also be ``None``, in which case the
167   :c:type:`Py_UNICODE` pointer is set to ``NULL``.
168
169   .. deprecated-removed:: 3.3 3.12
170      Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using
171      :c:func:`PyUnicode_AsWideCharString`.
172
173``Z#`` (:class:`str` or ``None``) [const Py_UNICODE \*, :c:type:`Py_ssize_t`]
174   Like ``u#``, but the Python object may also be ``None``, in which case the
175   :c:type:`Py_UNICODE` pointer is set to ``NULL``.
176
177   .. deprecated-removed:: 3.3 3.12
178      Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using
179      :c:func:`PyUnicode_AsWideCharString`.
180
181``U`` (:class:`str`) [PyObject \*]
182   Requires that the Python object is a Unicode object, without attempting
183   any conversion.  Raises :exc:`TypeError` if the object is not a Unicode
184   object.  The C variable may also be declared as :c:type:`PyObject*`.
185
186``w*`` (read-write :term:`bytes-like object`) [Py_buffer]
187   This format accepts any object which implements the read-write buffer
188   interface. It fills a :c:type:`Py_buffer` structure provided by the caller.
189   The buffer may contain embedded null bytes. The caller have to call
190   :c:func:`PyBuffer_Release` when it is done with the buffer.
191
192``es`` (:class:`str`) [const char \*encoding, char \*\*buffer]
193   This variant on ``s`` is used for encoding Unicode into a character buffer.
194   It only works for encoded data without embedded NUL bytes.
195
196   This format requires two arguments.  The first is only used as input, and
197   must be a :c:type:`const char*` which points to the name of an encoding as a
198   NUL-terminated string, or ``NULL``, in which case ``'utf-8'`` encoding is used.
199   An exception is raised if the named encoding is not known to Python.  The
200   second argument must be a :c:type:`char**`; the value of the pointer it
201   references will be set to a buffer with the contents of the argument text.
202   The text will be encoded in the encoding specified by the first argument.
203
204   :c:func:`PyArg_ParseTuple` will allocate a buffer of the needed size, copy the
205   encoded data into this buffer and adjust *\*buffer* to reference the newly
206   allocated storage.  The caller is responsible for calling :c:func:`PyMem_Free` to
207   free the allocated buffer after use.
208
209``et`` (:class:`str`, :class:`bytes` or :class:`bytearray`) [const char \*encoding, char \*\*buffer]
210   Same as ``es`` except that byte string objects are passed through without
211   recoding them.  Instead, the implementation assumes that the byte string object uses
212   the encoding passed in as parameter.
213
214``es#`` (:class:`str`) [const char \*encoding, char \*\*buffer, :c:type:`Py_ssize_t` \*buffer_length]
215   This variant on ``s#`` is used for encoding Unicode into a character buffer.
216   Unlike the ``es`` format, this variant allows input data which contains NUL
217   characters.
218
219   It requires three arguments.  The first is only used as input, and must be a
220   :c:type:`const char*` which points to the name of an encoding as a
221   NUL-terminated string, or ``NULL``, in which case ``'utf-8'`` encoding is used.
222   An exception is raised if the named encoding is not known to Python.  The
223   second argument must be a :c:type:`char**`; the value of the pointer it
224   references will be set to a buffer with the contents of the argument text.
225   The text will be encoded in the encoding specified by the first argument.
226   The third argument must be a pointer to an integer; the referenced integer
227   will be set to the number of bytes in the output buffer.
228
229   There are two modes of operation:
230
231   If *\*buffer* points a ``NULL`` pointer, the function will allocate a buffer of
232   the needed size, copy the encoded data into this buffer and set *\*buffer* to
233   reference the newly allocated storage.  The caller is responsible for calling
234   :c:func:`PyMem_Free` to free the allocated buffer after usage.
235
236   If *\*buffer* points to a non-``NULL`` pointer (an already allocated buffer),
237   :c:func:`PyArg_ParseTuple` will use this location as the buffer and interpret the
238   initial value of *\*buffer_length* as the buffer size.  It will then copy the
239   encoded data into the buffer and NUL-terminate it.  If the buffer is not large
240   enough, a :exc:`ValueError` will be set.
241
242   In both cases, *\*buffer_length* is set to the length of the encoded data
243   without the trailing NUL byte.
244
245``et#`` (:class:`str`, :class:`bytes` or :class:`bytearray`) [const char \*encoding, char \*\*buffer, :c:type:`Py_ssize_t` \*buffer_length]
246   Same as ``es#`` except that byte string objects are passed through without recoding
247   them. Instead, the implementation assumes that the byte string object uses the
248   encoding passed in as parameter.
249
250Numbers
251-------
252
253``b`` (:class:`int`) [unsigned char]
254   Convert a nonnegative Python integer to an unsigned tiny int, stored in a C
255   :c:type:`unsigned char`.
256
257``B`` (:class:`int`) [unsigned char]
258   Convert a Python integer to a tiny int without overflow checking, stored in a C
259   :c:type:`unsigned char`.
260
261``h`` (:class:`int`) [short int]
262   Convert a Python integer to a C :c:type:`short int`.
263
264``H`` (:class:`int`) [unsigned short int]
265   Convert a Python integer to a C :c:type:`unsigned short int`, without overflow
266   checking.
267
268``i`` (:class:`int`) [int]
269   Convert a Python integer to a plain C :c:type:`int`.
270
271``I`` (:class:`int`) [unsigned int]
272   Convert a Python integer to a C :c:type:`unsigned int`, without overflow
273   checking.
274
275``l`` (:class:`int`) [long int]
276   Convert a Python integer to a C :c:type:`long int`.
277
278``k`` (:class:`int`) [unsigned long]
279   Convert a Python integer to a C :c:type:`unsigned long` without
280   overflow checking.
281
282``L`` (:class:`int`) [long long]
283   Convert a Python integer to a C :c:type:`long long`.
284
285``K`` (:class:`int`) [unsigned long long]
286   Convert a Python integer to a C :c:type:`unsigned long long`
287   without overflow checking.
288
289``n`` (:class:`int`) [Py_ssize_t]
290   Convert a Python integer to a C :c:type:`Py_ssize_t`.
291
292``c`` (:class:`bytes` or :class:`bytearray` of length 1) [char]
293   Convert a Python byte, represented as a :class:`bytes` or
294   :class:`bytearray` object of length 1, to a C :c:type:`char`.
295
296   .. versionchanged:: 3.3
297      Allow :class:`bytearray` objects.
298
299``C`` (:class:`str` of length 1) [int]
300   Convert a Python character, represented as a :class:`str` object of
301   length 1, to a C :c:type:`int`.
302
303``f`` (:class:`float`) [float]
304   Convert a Python floating point number to a C :c:type:`float`.
305
306``d`` (:class:`float`) [double]
307   Convert a Python floating point number to a C :c:type:`double`.
308
309``D`` (:class:`complex`) [Py_complex]
310   Convert a Python complex number to a C :c:type:`Py_complex` structure.
311
312Other objects
313-------------
314
315``O`` (object) [PyObject \*]
316   Store a Python object (without any conversion) in a C object pointer.  The C
317   program thus receives the actual object that was passed.  The object's reference
318   count is not increased.  The pointer stored is not ``NULL``.
319
320``O!`` (object) [*typeobject*, PyObject \*]
321   Store a Python object in a C object pointer.  This is similar to ``O``, but
322   takes two C arguments: the first is the address of a Python type object, the
323   second is the address of the C variable (of type :c:type:`PyObject*`) into which
324   the object pointer is stored.  If the Python object does not have the required
325   type, :exc:`TypeError` is raised.
326
327.. _o_ampersand:
328
329``O&`` (object) [*converter*, *anything*]
330   Convert a Python object to a C variable through a *converter* function.  This
331   takes two arguments: the first is a function, the second is the address of a C
332   variable (of arbitrary type), converted to :c:type:`void *`.  The *converter*
333   function in turn is called as follows::
334
335      status = converter(object, address);
336
337   where *object* is the Python object to be converted and *address* is the
338   :c:type:`void*` argument that was passed to the :c:func:`PyArg_Parse\*` function.
339   The returned *status* should be ``1`` for a successful conversion and ``0`` if
340   the conversion has failed.  When the conversion fails, the *converter* function
341   should raise an exception and leave the content of *address* unmodified.
342
343   If the *converter* returns ``Py_CLEANUP_SUPPORTED``, it may get called a
344   second time if the argument parsing eventually fails, giving the converter a
345   chance to release any memory that it had already allocated. In this second
346   call, the *object* parameter will be ``NULL``; *address* will have the same value
347   as in the original call.
348
349   .. versionchanged:: 3.1
350      ``Py_CLEANUP_SUPPORTED`` was added.
351
352``p`` (:class:`bool`) [int]
353   Tests the value passed in for truth (a boolean **p**\ redicate) and converts
354   the result to its equivalent C true/false integer value.
355   Sets the int to ``1`` if the expression was true and ``0`` if it was false.
356   This accepts any valid Python value.  See :ref:`truth` for more
357   information about how Python tests values for truth.
358
359   .. versionadded:: 3.3
360
361``(items)`` (:class:`tuple`) [*matching-items*]
362   The object must be a Python sequence whose length is the number of format units
363   in *items*.  The C arguments must correspond to the individual format units in
364   *items*.  Format units for sequences may be nested.
365
366It is possible to pass "long" integers (integers whose value exceeds the
367platform's :const:`LONG_MAX`) however no proper range checking is done --- the
368most significant bits are silently truncated when the receiving field is too
369small to receive the value (actually, the semantics are inherited from downcasts
370in C --- your mileage may vary).
371
372A few other characters have a meaning in a format string.  These may not occur
373inside nested parentheses.  They are:
374
375``|``
376   Indicates that the remaining arguments in the Python argument list are optional.
377   The C variables corresponding to optional arguments should be initialized to
378   their default value --- when an optional argument is not specified,
379   :c:func:`PyArg_ParseTuple` does not touch the contents of the corresponding C
380   variable(s).
381
382``$``
383   :c:func:`PyArg_ParseTupleAndKeywords` only:
384   Indicates that the remaining arguments in the Python argument list are
385   keyword-only.  Currently, all keyword-only arguments must also be optional
386   arguments, so ``|`` must always be specified before ``$`` in the format
387   string.
388
389   .. versionadded:: 3.3
390
391``:``
392   The list of format units ends here; the string after the colon is used as the
393   function name in error messages (the "associated value" of the exception that
394   :c:func:`PyArg_ParseTuple` raises).
395
396``;``
397   The list of format units ends here; the string after the semicolon is used as
398   the error message *instead* of the default error message.  ``:`` and ``;``
399   mutually exclude each other.
400
401Note that any Python object references which are provided to the caller are
402*borrowed* references; do not decrement their reference count!
403
404Additional arguments passed to these functions must be addresses of variables
405whose type is determined by the format string; these are used to store values
406from the input tuple.  There are a few cases, as described in the list of format
407units above, where these parameters are used as input values; they should match
408what is specified for the corresponding format unit in that case.
409
410For the conversion to succeed, the *arg* object must match the format
411and the format must be exhausted.  On success, the
412:c:func:`PyArg_Parse\*` functions return true, otherwise they return
413false and raise an appropriate exception. When the
414:c:func:`PyArg_Parse\*` functions fail due to conversion failure in one
415of the format units, the variables at the addresses corresponding to that
416and the following format units are left untouched.
417
418API Functions
419-------------
420
421.. c:function:: int PyArg_ParseTuple(PyObject *args, const char *format, ...)
422
423   Parse the parameters of a function that takes only positional parameters into
424   local variables.  Returns true on success; on failure, it returns false and
425   raises the appropriate exception.
426
427
428.. c:function:: int PyArg_VaParse(PyObject *args, const char *format, va_list vargs)
429
430   Identical to :c:func:`PyArg_ParseTuple`, except that it accepts a va_list rather
431   than a variable number of arguments.
432
433
434.. c:function:: int PyArg_ParseTupleAndKeywords(PyObject *args, PyObject *kw, const char *format, char *keywords[], ...)
435
436   Parse the parameters of a function that takes both positional and keyword
437   parameters into local variables.  The *keywords* argument is a
438   ``NULL``-terminated array of keyword parameter names.  Empty names denote
439   :ref:`positional-only parameters <positional-only_parameter>`.
440   Returns true on success; on failure, it returns false and raises the
441   appropriate exception.
442
443   .. versionchanged:: 3.6
444      Added support for :ref:`positional-only parameters
445      <positional-only_parameter>`.
446
447
448.. c:function:: int PyArg_VaParseTupleAndKeywords(PyObject *args, PyObject *kw, const char *format, char *keywords[], va_list vargs)
449
450   Identical to :c:func:`PyArg_ParseTupleAndKeywords`, except that it accepts a
451   va_list rather than a variable number of arguments.
452
453
454.. c:function:: int PyArg_ValidateKeywordArguments(PyObject *)
455
456   Ensure that the keys in the keywords argument dictionary are strings.  This
457   is only needed if :c:func:`PyArg_ParseTupleAndKeywords` is not used, since the
458   latter already does this check.
459
460   .. versionadded:: 3.2
461
462
463.. XXX deprecated, will be removed
464.. c:function:: int PyArg_Parse(PyObject *args, const char *format, ...)
465
466   Function used to deconstruct the argument lists of "old-style" functions ---
467   these are functions which use the :const:`METH_OLDARGS` parameter parsing
468   method, which has been removed in Python 3.  This is not recommended for use
469   in parameter parsing in new code, and most code in the standard interpreter
470   has been modified to no longer use this for that purpose.  It does remain a
471   convenient way to decompose other tuples, however, and may continue to be
472   used for that purpose.
473
474
475.. c:function:: int PyArg_UnpackTuple(PyObject *args, const char *name, Py_ssize_t min, Py_ssize_t max, ...)
476
477   A simpler form of parameter retrieval which does not use a format string to
478   specify the types of the arguments.  Functions which use this method to retrieve
479   their parameters should be declared as :const:`METH_VARARGS` in function or
480   method tables.  The tuple containing the actual parameters should be passed as
481   *args*; it must actually be a tuple.  The length of the tuple must be at least
482   *min* and no more than *max*; *min* and *max* may be equal.  Additional
483   arguments must be passed to the function, each of which should be a pointer to a
484   :c:type:`PyObject*` variable; these will be filled in with the values from
485   *args*; they will contain :term:`borrowed references <borrowed reference>`.
486   The variables which correspond
487   to optional parameters not given by *args* will not be filled in; these should
488   be initialized by the caller. This function returns true on success and false if
489   *args* is not a tuple or contains the wrong number of elements; an exception
490   will be set if there was a failure.
491
492   This is an example of the use of this function, taken from the sources for the
493   :mod:`_weakref` helper module for weak references::
494
495      static PyObject *
496      weakref_ref(PyObject *self, PyObject *args)
497      {
498          PyObject *object;
499          PyObject *callback = NULL;
500          PyObject *result = NULL;
501
502          if (PyArg_UnpackTuple(args, "ref", 1, 2, &object, &callback)) {
503              result = PyWeakref_NewRef(object, callback);
504          }
505          return result;
506      }
507
508   The call to :c:func:`PyArg_UnpackTuple` in this example is entirely equivalent to
509   this call to :c:func:`PyArg_ParseTuple`::
510
511      PyArg_ParseTuple(args, "O|O:ref", &object, &callback)
512
513
514---------------
515Building values
516---------------
517
518.. c:function:: PyObject* Py_BuildValue(const char *format, ...)
519
520   Create a new value based on a format string similar to those accepted by the
521   :c:func:`PyArg_Parse\*` family of functions and a sequence of values.  Returns
522   the value or ``NULL`` in the case of an error; an exception will be raised if
523   ``NULL`` is returned.
524
525   :c:func:`Py_BuildValue` does not always build a tuple.  It builds a tuple only if
526   its format string contains two or more format units.  If the format string is
527   empty, it returns ``None``; if it contains exactly one format unit, it returns
528   whatever object is described by that format unit.  To force it to return a tuple
529   of size 0 or one, parenthesize the format string.
530
531   When memory buffers are passed as parameters to supply data to build objects, as
532   for the ``s`` and ``s#`` formats, the required data is copied.  Buffers provided
533   by the caller are never referenced by the objects created by
534   :c:func:`Py_BuildValue`.  In other words, if your code invokes :c:func:`malloc`
535   and passes the allocated memory to :c:func:`Py_BuildValue`, your code is
536   responsible for calling :c:func:`free` for that memory once
537   :c:func:`Py_BuildValue` returns.
538
539   In the following description, the quoted form is the format unit; the entry in
540   (round) parentheses is the Python object type that the format unit will return;
541   and the entry in [square] brackets is the type of the C value(s) to be passed.
542
543   The characters space, tab, colon and comma are ignored in format strings (but
544   not within format units such as ``s#``).  This can be used to make long format
545   strings a tad more readable.
546
547   ``s`` (:class:`str` or ``None``) [const char \*]
548      Convert a null-terminated C string to a Python :class:`str` object using ``'utf-8'``
549      encoding. If the C string pointer is ``NULL``, ``None`` is used.
550
551   ``s#`` (:class:`str` or ``None``) [const char \*, :c:type:`Py_ssize_t`]
552      Convert a C string and its length to a Python :class:`str` object using ``'utf-8'``
553      encoding. If the C string pointer is ``NULL``, the length is ignored and
554      ``None`` is returned.
555
556   ``y`` (:class:`bytes`) [const char \*]
557      This converts a C string to a Python :class:`bytes` object.  If the C
558      string pointer is ``NULL``, ``None`` is returned.
559
560   ``y#`` (:class:`bytes`) [const char \*, :c:type:`Py_ssize_t`]
561      This converts a C string and its lengths to a Python object.  If the C
562      string pointer is ``NULL``, ``None`` is returned.
563
564   ``z`` (:class:`str` or ``None``) [const char \*]
565      Same as ``s``.
566
567   ``z#`` (:class:`str` or ``None``) [const char \*, :c:type:`Py_ssize_t`]
568      Same as ``s#``.
569
570   ``u`` (:class:`str`) [const wchar_t \*]
571      Convert a null-terminated :c:type:`wchar_t` buffer of Unicode (UTF-16 or UCS-4)
572      data to a Python Unicode object.  If the Unicode buffer pointer is ``NULL``,
573      ``None`` is returned.
574
575   ``u#`` (:class:`str`) [const wchar_t \*, :c:type:`Py_ssize_t`]
576      Convert a Unicode (UTF-16 or UCS-4) data buffer and its length to a Python
577      Unicode object.   If the Unicode buffer pointer is ``NULL``, the length is ignored
578      and ``None`` is returned.
579
580   ``U`` (:class:`str` or ``None``) [const char \*]
581      Same as ``s``.
582
583   ``U#`` (:class:`str` or ``None``) [const char \*, :c:type:`Py_ssize_t`]
584      Same as ``s#``.
585
586   ``i`` (:class:`int`) [int]
587      Convert a plain C :c:type:`int` to a Python integer object.
588
589   ``b`` (:class:`int`) [char]
590      Convert a plain C :c:type:`char` to a Python integer object.
591
592   ``h`` (:class:`int`) [short int]
593      Convert a plain C :c:type:`short int` to a Python integer object.
594
595   ``l`` (:class:`int`) [long int]
596      Convert a C :c:type:`long int` to a Python integer object.
597
598   ``B`` (:class:`int`) [unsigned char]
599      Convert a C :c:type:`unsigned char` to a Python integer object.
600
601   ``H`` (:class:`int`) [unsigned short int]
602      Convert a C :c:type:`unsigned short int` to a Python integer object.
603
604   ``I`` (:class:`int`) [unsigned int]
605      Convert a C :c:type:`unsigned int` to a Python integer object.
606
607   ``k`` (:class:`int`) [unsigned long]
608      Convert a C :c:type:`unsigned long` to a Python integer object.
609
610   ``L`` (:class:`int`) [long long]
611      Convert a C :c:type:`long long` to a Python integer object.
612
613   ``K`` (:class:`int`) [unsigned long long]
614      Convert a C :c:type:`unsigned long long` to a Python integer object.
615
616   ``n`` (:class:`int`) [Py_ssize_t]
617      Convert a C :c:type:`Py_ssize_t` to a Python integer.
618
619   ``c`` (:class:`bytes` of length 1) [char]
620      Convert a C :c:type:`int` representing a byte to a Python :class:`bytes` object of
621      length 1.
622
623   ``C`` (:class:`str` of length 1) [int]
624      Convert a C :c:type:`int` representing a character to Python :class:`str`
625      object of length 1.
626
627   ``d`` (:class:`float`) [double]
628      Convert a C :c:type:`double` to a Python floating point number.
629
630   ``f`` (:class:`float`) [float]
631      Convert a C :c:type:`float` to a Python floating point number.
632
633   ``D`` (:class:`complex`) [Py_complex \*]
634      Convert a C :c:type:`Py_complex` structure to a Python complex number.
635
636   ``O`` (object) [PyObject \*]
637      Pass a Python object untouched (except for its reference count, which is
638      incremented by one).  If the object passed in is a ``NULL`` pointer, it is assumed
639      that this was caused because the call producing the argument found an error and
640      set an exception. Therefore, :c:func:`Py_BuildValue` will return ``NULL`` but won't
641      raise an exception.  If no exception has been raised yet, :exc:`SystemError` is
642      set.
643
644   ``S`` (object) [PyObject \*]
645      Same as ``O``.
646
647   ``N`` (object) [PyObject \*]
648      Same as ``O``, except it doesn't increment the reference count on the object.
649      Useful when the object is created by a call to an object constructor in the
650      argument list.
651
652   ``O&`` (object) [*converter*, *anything*]
653      Convert *anything* to a Python object through a *converter* function.  The
654      function is called with *anything* (which should be compatible with :c:type:`void*`)
655      as its argument and should return a "new" Python object, or ``NULL`` if an
656      error occurred.
657
658   ``(items)`` (:class:`tuple`) [*matching-items*]
659      Convert a sequence of C values to a Python tuple with the same number of items.
660
661   ``[items]`` (:class:`list`) [*matching-items*]
662      Convert a sequence of C values to a Python list with the same number of items.
663
664   ``{items}`` (:class:`dict`) [*matching-items*]
665      Convert a sequence of C values to a Python dictionary.  Each pair of consecutive
666      C values adds one item to the dictionary, serving as key and value,
667      respectively.
668
669   If there is an error in the format string, the :exc:`SystemError` exception is
670   set and ``NULL`` returned.
671
672.. c:function:: PyObject* Py_VaBuildValue(const char *format, va_list vargs)
673
674   Identical to :c:func:`Py_BuildValue`, except that it accepts a va_list
675   rather than a variable number of arguments.
676