Home | History | Annotate | Download | only in c-api
      1 .. highlightlang:: c
      2 
      3 .. _arg-parsing:
      4 
      5 Parsing arguments and building values
      6 =====================================
      7 
      8 These functions are useful when creating your own extensions functions and
      9 methods.  Additional information and examples are available in
     10 :ref:`extending-index`.
     11 
     12 The first three of these functions described, :c:func:`PyArg_ParseTuple`,
     13 :c:func:`PyArg_ParseTupleAndKeywords`, and :c:func:`PyArg_Parse`, all use
     14 *format strings* which are used to tell the function about the expected
     15 arguments.  The format strings use the same syntax for each of these
     16 functions.
     17 
     18 A format string consists of zero or more "format units."  A format unit
     19 describes one Python object; it is usually a single character or a
     20 parenthesized sequence of format units.  With a few exceptions, a format unit
     21 that is not a parenthesized sequence normally corresponds to a single address
     22 argument to these functions.  In the following description, the quoted form is
     23 the format unit; the entry in (round) parentheses is the Python object type
     24 that matches the format unit; and the entry in [square] brackets is the type
     25 of the C variable(s) whose address should be passed.
     26 
     27 These formats allow accessing an object as a contiguous chunk of memory.
     28 You don't have to provide raw storage for the returned unicode or bytes
     29 area.  Also, you won't have to release any memory yourself, except with the
     30 ``es``, ``es#``, ``et`` and ``et#`` formats.
     31 
     32 ``s`` (string or Unicode) [const char \*]
     33    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.
     40 
     41 ``s#`` (string, Unicode or any read buffer compatible object) [const char \*, int (or :c:type:`Py_ssize_t`, see below)]
     42    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.
     48 
     49    Starting with Python 2.5 the type of the length argument can be controlled
     50    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`
     52    rather than an int.
     53 
     54 ``s*`` (string, Unicode, or any buffer compatible object) [Py_buffer]
     55    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.
     60 
     61    .. versionadded:: 2.6
     62 
     63 ``z`` (string, Unicode  or ``None``) [const char \*]
     64    Like ``s``, but the Python object may also be ``None``, in which case the C
     65    pointer is set to *NULL*.
     66 
     67 ``z#`` (string, Unicode, ``None`` or any read buffer compatible object) [const char \*, int]
     68    This is to ``s#`` as ``z`` is to ``s``.
     69 
     70 ``z*`` (string, Unicode, ``None`` or any buffer compatible object) [Py_buffer]
     71    This is to ``s*`` as ``z`` is to ``s``.
     72 
     73    .. versionadded:: 2.6
     74 
     75 ``u`` (Unicode) [Py_UNICODE \*]
     76    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
     79    Unicode data is stored into the :c:type:`Py_UNICODE` pointer variable whose
     80    address you pass.
     81 
     82 ``u#`` (Unicode) [Py_UNICODE \*, int]
     83    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
     86    :c:type:`Py_UNICODE` array.
     87 
     88 ``es`` (string, Unicode or character buffer compatible object) [const char \*encoding, char \*\*buffer]
     89    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.
     92 
     93    This format requires two arguments.  The first is only used as input, and
     94    must be a :c:type:`const char\*` which points to the name of an encoding as
     95    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.
     97    The second argument must be a :c:type:`char\*\*`; the value of the pointer
     98    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.
    101 
    102    :c:func:`PyArg_ParseTuple` will allocate a buffer of the needed size, copy
    103    the encoded data into this buffer and adjust *\*buffer* to reference the
    104    newly allocated storage.  The caller is responsible for calling
    105    :c:func:`PyMem_Free` to free the allocated buffer after use.
    106 
    107 ``et`` (string, Unicode or character buffer compatible object) [const char \*encoding, char \*\*buffer]
    108    Same as ``es`` except that 8-bit string objects are passed through without
    109    recoding them.  Instead, the implementation assumes that the string object
    110    uses the encoding passed in as parameter.
    111 
    112 ``es#`` (string, Unicode or character buffer compatible object) [const char \*encoding, char \*\*buffer, int \*buffer_length]
    113    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.
    116 
    117    It requires three arguments.  The first is only used as input, and must be
    118    a :c:type:`const char\*` which points to the name of an encoding as a
    119    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.
    121    The second argument must be a :c:type:`char\*\*`; the value of the pointer
    122    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.
    126 
    127    There are two modes of operation:
    128 
    129    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
    132    responsible for calling :c:func:`PyMem_Free` to free the allocated buffer
    133    after usage.
    134 
    135    If *\*buffer* points to a non-*NULL* pointer (an already allocated buffer),
    136    :c:func:`PyArg_ParseTuple` will use this location as the buffer and
    137    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
    139    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.
    141 
    142    In both cases, *\*buffer_length* is set to the length of the encoded data
    143    without the trailing NUL byte.
    144 
    145 ``et#`` (string, Unicode or character buffer compatible object) [const char \*encoding, char \*\*buffer, int \*buffer_length]
    146    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.
    149 
    150 ``b`` (integer) [unsigned char]
    151    Convert a nonnegative Python integer to an unsigned tiny int, stored in a C
    152    :c:type:`unsigned char`.
    153 
    154 ``B`` (integer) [unsigned char]
    155    Convert a Python integer to a tiny int without overflow checking, stored in
    156    a C :c:type:`unsigned char`.
    157 
    158    .. versionadded:: 2.3
    159 
    160 ``h`` (integer) [short int]
    161    Convert a Python integer to a C :c:type:`short int`.
    162 
    163 ``H`` (integer) [unsigned short int]
    164    Convert a Python integer to a C :c:type:`unsigned short int`, without
    165    overflow checking.
    166 
    167    .. versionadded:: 2.3
    168 
    169 ``i`` (integer) [int]
    170    Convert a Python integer to a plain C :c:type:`int`.
    171 
    172 ``I`` (integer) [unsigned int]
    173    Convert a Python integer to a C :c:type:`unsigned int`, without overflow
    174    checking.
    175 
    176    .. versionadded:: 2.3
    177 
    178 ``l`` (integer) [long int]
    179    Convert a Python integer to a C :c:type:`long int`.
    180 
    181 ``k`` (integer) [unsigned long]
    182    Convert a Python integer or long integer to a C :c:type:`unsigned long`
    183    without overflow checking.
    184 
    185    .. versionadded:: 2.3
    186 
    187 ``L`` (integer) [PY_LONG_LONG]
    188    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`
    190    on Windows).
    191 
    192 ``K`` (integer) [unsigned PY_LONG_LONG]
    193    Convert a Python integer or long integer to a C :c:type:`unsigned long long`
    194    without overflow checking.  This format is only available on platforms that
    195    support :c:type:`unsigned long long` (or :c:type:`unsigned _int64` on
    196    Windows).
    197 
    198    .. versionadded:: 2.3
    199 
    200 ``n`` (integer) [Py_ssize_t]
    201    Convert a Python integer or long integer to a C :c:type:`Py_ssize_t`.
    202 
    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
    207    :c:type:`char`.
    208 
    209 ``f`` (float) [float]
    210    Convert a Python floating point number to a C :c:type:`float`.
    211 
    212 ``d`` (float) [double]
    213    Convert a Python floating point number to a C :c:type:`double`.
    214 
    215 ``D`` (complex) [Py_complex]
    216    Convert a Python complex number to a C :c:type:`Py_complex` structure.
    217 
    218 ``O`` (object) [PyObject \*]
    219    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*.
    222 
    223 ``O!`` (object) [*typeobject*, PyObject \*]
    224    Store a Python object in a C object pointer.  This is similar to ``O``, but
    225    takes two C arguments: the first is the address of a Python type object,
    226    the second is the address of the C variable (of type :c:type:`PyObject\*`)
    227    into which the object pointer is stored.  If the Python object does not
    228    have the required type, :exc:`TypeError` is raised.
    229 
    230 ``O&`` (object) [*converter*, *anything*]
    231    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
    233    address of a C variable (of arbitrary type), converted to :c:type:`void \*`.
    234    The *converter* function in turn is called as follows::
    235 
    236       status = converter(object, address);
    237 
    238    where *object* is the Python object to be converted and *address* is the
    239    :c:type:`void\*` argument that was passed to the :c:func:`PyArg_Parse\*`
    240    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.
    244 
    245 ``S`` (string) [PyStringObject \*]
    246    Like ``O`` but requires that the Python object is a string object.  Raises
    247    :exc:`TypeError` if the object is not a string object.  The C variable may
    248    also be declared as :c:type:`PyObject\*`.
    249 
    250 ``U`` (Unicode string) [PyUnicodeObject \*]
    251    Like ``O`` but requires that the Python object is a Unicode object.  Raises
    252    :exc:`TypeError` if the object is not a Unicode object.  The C variable may
    253    also be declared as :c:type:`PyObject\*`.
    254 
    255 ``t#`` (read-only character buffer) [char \*, int]
    256    Like ``s#``, but accepts any object which implements the read-only buffer
    257    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.
    259    Only single-segment buffer objects are accepted; :exc:`TypeError` is raised
    260    for all others.
    261 
    262 ``w`` (read-write character buffer) [char \*]
    263    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.
    267 
    268 ``w#`` (read-write character buffer) [char \*, Py_ssize_t]
    269    Like ``s#``, but accepts any object which implements the read-write buffer
    270    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
    272    buffer.  Only single-segment buffer objects are accepted; :exc:`TypeError`
    273    is raised for all others.
    274 
    275 ``w*`` (read-write byte-oriented buffer) [Py_buffer]
    276    This is to ``w`` what ``s*`` is to ``s``.
    277 
    278    .. versionadded:: 2.6
    279 
    280 ``(items)`` (tuple) [*matching-items*]
    281    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.
    284 
    285    .. note::
    286 
    287       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.
    292 
    293 It is possible to pass Python long integers where integers are requested;
    294 however no proper range checking is done --- the most significant bits are
    295 silently truncated when the receiving field is too small to receive the value
    296 (actually, the semantics are inherited from downcasts in C --- your mileage
    297 may vary).
    298 
    299 A few other characters have a meaning in a format string.  These may not occur
    300 inside nested parentheses.  They are:
    301 
    302 ``|``
    303    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
    306    specified, :c:func:`PyArg_ParseTuple` does not touch the contents of the
    307    corresponding C variable(s).
    308 
    309 ``:``
    310    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
    312    exception that :c:func:`PyArg_ParseTuple` raises).
    313 
    314 ``;``
    315    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.
    318 
    319 Note that any Python object references which are provided to the caller are
    320 *borrowed* references; do not decrement their reference count!
    321 
    322 Additional arguments passed to these functions must be addresses of variables
    323 whose type is determined by the format string; these are used to store values
    324 from the input tuple.  There are a few cases, as described in the list of
    325 format units above, where these parameters are used as input values; they
    326 should match what is specified for the corresponding format unit in that case.
    327 
    328 For the conversion to succeed, the *arg* object must match the format and the
    329 format must be exhausted.  On success, the :c:func:`PyArg_Parse\*` functions
    330 return true, otherwise they return false and raise an appropriate exception.
    331 When the :c:func:`PyArg_Parse\*` functions fail due to conversion failure in
    332 one of the format units, the variables at the addresses corresponding to that
    333 and the following format units are left untouched.
    334 
    335 
    336 .. c:function:: int PyArg_ParseTuple(PyObject *args, const char *format, ...)
    337 
    338    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.
    341 
    342 
    343 .. c:function:: int PyArg_VaParse(PyObject *args, const char *format, va_list vargs)
    344 
    345    Identical to :c:func:`PyArg_ParseTuple`, except that it accepts a va_list
    346    rather than a variable number of arguments.
    347 
    348 
    349 .. c:function:: int PyArg_ParseTupleAndKeywords(PyObject *args, PyObject *kw, const char *format, char *keywords[], ...)
    350 
    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 
    356 .. c:function:: int PyArg_VaParseTupleAndKeywords(PyObject *args, PyObject *kw, const char *format, char *keywords[], va_list vargs)
    357 
    358    Identical to :c:func:`PyArg_ParseTupleAndKeywords`, except that it accepts a
    359    va_list rather than a variable number of arguments.
    360 
    361 
    362 .. c:function:: int PyArg_Parse(PyObject *args, const char *format, ...)
    363 
    364    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.
    371 
    372 
    373 .. c:function:: int PyArg_UnpackTuple(PyObject *args, const char *name, Py_ssize_t min, Py_ssize_t max, ...)
    374 
    375    A simpler form of parameter retrieval which does not use a format string to
    376    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
    382    should be a pointer to a :c:type:`PyObject\*` variable; these will be filled
    383    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.
    388 
    389    This is an example of the use of this function, taken from the sources for
    390    the :mod:`_weakref` helper module for weak references::
    391 
    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 
    405    The call to :c:func:`PyArg_UnpackTuple` in this example is entirely
    406    equivalent to this call to :c:func:`PyArg_ParseTuple`::
    407 
    408       PyArg_ParseTuple(args, "O|O:ref", &object, &callback)
    409 
    410    .. versionadded:: 2.2
    411 
    412    .. versionchanged:: 2.5
    413       This function used an :c:type:`int` type for *min* and *max*. This might
    414       require changes in your code for properly supporting 64-bit systems.
    415 
    416 
    417 .. c:function:: PyObject* Py_BuildValue(const char *format, ...)
    418 
    419    Create a new value based on a format string similar to those accepted by
    420    the :c:func:`PyArg_Parse\*` family of functions and a sequence of values.
    421    Returns the value or *NULL* in the case of an error; an exception will be
    422    raised if *NULL* is returned.
    423 
    424    :c:func:`Py_BuildValue` does not always build a tuple.  It builds a tuple
    425    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
    428    force it to return a tuple of size ``0`` or one, parenthesize the format
    429    string.
    430 
    431    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
    434    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.
    438 
    439    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.
    443 
    444    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.
    447 
    448    ``s`` (string) [char \*]
    449       Convert a null-terminated C string to a Python object.  If the C string
    450       pointer is *NULL*, ``None`` is used.
    451 
    452    ``s#`` (string) [char \*, int]
    453       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.
    455 
    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 \*]
    463       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.
    466 
    467    ``u#`` (Unicode string) [Py_UNICODE \*, int]
    468       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.
    471 
    472    ``i`` (integer) [int]
    473       Convert a plain C :c:type:`int` to a Python integer object.
    474 
    475    ``b`` (integer) [char]
    476       Convert a plain C :c:type:`char` to a Python integer object.
    477 
    478    ``h`` (integer) [short int]
    479       Convert a plain C :c:type:`short int` to a Python integer object.
    480 
    481    ``l`` (integer) [long int]
    482       Convert a C :c:type:`long int` to a Python integer object.
    483 
    484    ``B`` (integer) [unsigned char]
    485       Convert a C :c:type:`unsigned char` to a Python integer object.
    486 
    487    ``H`` (integer) [unsigned short int]
    488       Convert a C :c:type:`unsigned short int` to a Python integer object.
    489 
    490    ``I`` (integer/long) [unsigned int]
    491       Convert a C :c:type:`unsigned int` to a Python integer object or a Python
    492       long integer object, if it is larger than ``sys.maxint``.
    493 
    494    ``k`` (integer/long) [unsigned long]
    495       Convert a C :c:type:`unsigned long` to a Python integer object or a
    496       Python long integer object, if it is larger than ``sys.maxint``.
    497 
    498    ``L`` (long) [PY_LONG_LONG]
    499       Convert a C :c:type:`long long` to a Python long integer object. Only
    500       available on platforms that support :c:type:`long long`.
    501 
    502    ``K`` (long) [unsigned PY_LONG_LONG]
    503       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`.
    505 
    506    ``n`` (int) [Py_ssize_t]
    507       Convert a C :c:type:`Py_ssize_t` to a Python integer or long integer.
    508 
    509       .. versionadded:: 2.5
    510 
    511    ``c`` (string of length 1) [char]
    512       Convert a C :c:type:`int` representing a character to a Python string of
    513       length 1.
    514 
    515    ``d`` (float) [double]
    516       Convert a C :c:type:`double` to a Python floating point number.
    517 
    518    ``f`` (float) [float]
    519       Same as ``d``.
    520 
    521    ``D`` (complex) [Py_complex \*]
    522       Convert a C :c:type:`Py_complex` structure to a Python complex number.
    523 
    524    ``O`` (object) [PyObject \*]
    525       Pass a Python object untouched (except for its reference count, which is
    526       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
    528       found an error and set an exception. Therefore, :c:func:`Py_BuildValue`
    529       will return *NULL* but won't raise an exception.  If no exception has
    530       been raised yet, :exc:`SystemError` is set.
    531 
    532    ``S`` (object) [PyObject \*]
    533       Same as ``O``.
    534 
    535    ``N`` (object) [PyObject \*]
    536       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.
    539 
    540    ``O&`` (object) [*converter*, *anything*]
    541       Convert *anything* to a Python object through a *converter* function.
    542       The function is called with *anything* (which should be compatible with
    543       :c:type:`void \*`) as its argument and should return a "new" Python
    544       object, or *NULL* if an error occurred.
    545 
    546    ``(items)`` (tuple) [*matching-items*]
    547       Convert a sequence of C values to a Python tuple with the same number of
    548       items.
    549 
    550    ``[items]`` (list) [*matching-items*]
    551       Convert a sequence of C values to a Python list with the same number of
    552       items.
    553 
    554    ``{items}`` (dictionary) [*matching-items*]
    555       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.
    558 
    559    If there is an error in the format string, the :exc:`SystemError` exception
    560    is set and *NULL* returned.
    561 
    562 .. c:function:: PyObject* Py_VaBuildValue(const char *format, va_list vargs)
    563 
    564    Identical to :c:func:`Py_BuildValue`, except that it accepts a va_list
    565    rather than a variable number of arguments.
    566