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