blob: 343223c115269f218e069454fa74931f574b0453 [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +00001.. highlightlang:: c
2
3
4.. _concrete:
5
6**********************
7Concrete Objects Layer
8**********************
9
10The functions in this chapter are specific to certain Python object types.
11Passing them an object of the wrong type is not a good idea; if you receive an
12object from a Python program and you are not sure that it has the right type,
13you must perform a type check first; for example, to check that an object is a
14dictionary, use :cfunc:`PyDict_Check`. The chapter is structured like the
15"family tree" of Python object types.
16
17.. warning::
18
19 While the functions described in this chapter carefully check the type of the
20 objects which are passed in, many of them do not check for *NULL* being passed
21 instead of a valid object. Allowing *NULL* to be passed in can cause memory
22 access violations and immediate termination of the interpreter.
23
24
25.. _fundamental:
26
27Fundamental Objects
28===================
29
30This section describes Python type objects and the singleton object ``None``.
31
32
33.. _typeobjects:
34
35Type Objects
36------------
37
38.. index:: object: type
39
40
41.. ctype:: PyTypeObject
42
43 The C structure of the objects used to describe built-in types.
44
45
46.. cvar:: PyObject* PyType_Type
47
48 .. index:: single: TypeType (in module types)
49
50 This is the type object for type objects; it is the same object as ``type`` and
51 ``types.TypeType`` in the Python layer.
52
53
54.. cfunction:: int PyType_Check(PyObject *o)
55
56 Return true if the object *o* is a type object, including instances of types
57 derived from the standard type object. Return false in all other cases.
58
59
60.. cfunction:: int PyType_CheckExact(PyObject *o)
61
62 Return true if the object *o* is a type object, but not a subtype of the
63 standard type object. Return false in all other cases.
64
Georg Brandl116aa622007-08-15 14:28:22 +000065
66.. cfunction:: int PyType_HasFeature(PyObject *o, int feature)
67
68 Return true if the type object *o* sets the feature *feature*. Type features
69 are denoted by single bit flags.
70
71
72.. cfunction:: int PyType_IS_GC(PyObject *o)
73
74 Return true if the type object includes support for the cycle detector; this
75 tests the type flag :const:`Py_TPFLAGS_HAVE_GC`.
76
Georg Brandl116aa622007-08-15 14:28:22 +000077
78.. cfunction:: int PyType_IsSubtype(PyTypeObject *a, PyTypeObject *b)
79
80 Return true if *a* is a subtype of *b*.
81
Georg Brandl116aa622007-08-15 14:28:22 +000082
83.. cfunction:: PyObject* PyType_GenericAlloc(PyTypeObject *type, Py_ssize_t nitems)
84
Georg Brandl321976b2007-09-01 12:33:24 +000085 XXX: Document.
Georg Brandl116aa622007-08-15 14:28:22 +000086
87
88.. cfunction:: PyObject* PyType_GenericNew(PyTypeObject *type, PyObject *args, PyObject *kwds)
89
Georg Brandl321976b2007-09-01 12:33:24 +000090 XXX: Document.
Georg Brandl116aa622007-08-15 14:28:22 +000091
92
93.. cfunction:: int PyType_Ready(PyTypeObject *type)
94
95 Finalize a type object. This should be called on all type objects to finish
96 their initialization. This function is responsible for adding inherited slots
97 from a type's base class. Return ``0`` on success, or return ``-1`` and sets an
98 exception on error.
99
Georg Brandl116aa622007-08-15 14:28:22 +0000100
101.. _noneobject:
102
103The None Object
104---------------
105
106.. index:: object: None
107
108Note that the :ctype:`PyTypeObject` for ``None`` is not directly exposed in the
109Python/C API. Since ``None`` is a singleton, testing for object identity (using
110``==`` in C) is sufficient. There is no :cfunc:`PyNone_Check` function for the
111same reason.
112
113
114.. cvar:: PyObject* Py_None
115
116 The Python ``None`` object, denoting lack of value. This object has no methods.
117 It needs to be treated just like any other object with respect to reference
118 counts.
119
120
121.. cmacro:: Py_RETURN_NONE
122
Georg Brandl321976b2007-09-01 12:33:24 +0000123 Properly handle returning :cdata:`Py_None` from within a C function (that is,
124 increment the reference count of None and return it.)
Georg Brandl116aa622007-08-15 14:28:22 +0000125
126
127.. _numericobjects:
128
129Numeric Objects
130===============
131
132.. index:: object: numeric
133
134
Georg Brandl116aa622007-08-15 14:28:22 +0000135.. _boolobjects:
136
137Boolean Objects
138---------------
139
140Booleans in Python are implemented as a subclass of integers. There are only
141two booleans, :const:`Py_False` and :const:`Py_True`. As such, the normal
142creation and deletion functions don't apply to booleans. The following macros
143are available, however.
144
145
146.. cfunction:: int PyBool_Check(PyObject *o)
147
148 Return true if *o* is of type :cdata:`PyBool_Type`.
149
Georg Brandl116aa622007-08-15 14:28:22 +0000150
151.. cvar:: PyObject* Py_False
152
153 The Python ``False`` object. This object has no methods. It needs to be
154 treated just like any other object with respect to reference counts.
155
156
157.. cvar:: PyObject* Py_True
158
159 The Python ``True`` object. This object has no methods. It needs to be treated
160 just like any other object with respect to reference counts.
161
162
163.. cmacro:: Py_RETURN_FALSE
164
165 Return :const:`Py_False` from a function, properly incrementing its reference
166 count.
167
Georg Brandl116aa622007-08-15 14:28:22 +0000168
169.. cmacro:: Py_RETURN_TRUE
170
171 Return :const:`Py_True` from a function, properly incrementing its reference
172 count.
173
Georg Brandl116aa622007-08-15 14:28:22 +0000174
175.. cfunction:: PyObject* PyBool_FromLong(long v)
176
177 Return a new reference to :const:`Py_True` or :const:`Py_False` depending on the
178 truth value of *v*.
179
Georg Brandl116aa622007-08-15 14:28:22 +0000180
181.. _longobjects:
182
Georg Brandl9914dd32007-12-02 23:08:39 +0000183Integer Objects
184---------------
Georg Brandl116aa622007-08-15 14:28:22 +0000185
186.. index:: object: long integer
Georg Brandl9914dd32007-12-02 23:08:39 +0000187 object: integer
Georg Brandl116aa622007-08-15 14:28:22 +0000188
Georg Brandl9914dd32007-12-02 23:08:39 +0000189All integers are implemented as "long" integer objects of arbitrary size.
Georg Brandl116aa622007-08-15 14:28:22 +0000190
191.. ctype:: PyLongObject
192
Georg Brandl9914dd32007-12-02 23:08:39 +0000193 This subtype of :ctype:`PyObject` represents a Python integer object.
Georg Brandl116aa622007-08-15 14:28:22 +0000194
195
196.. cvar:: PyTypeObject PyLong_Type
197
Georg Brandl9914dd32007-12-02 23:08:39 +0000198 This instance of :ctype:`PyTypeObject` represents the Python integer type.
199 This is the same object as ``int``.
Georg Brandl116aa622007-08-15 14:28:22 +0000200
201
202.. cfunction:: int PyLong_Check(PyObject *p)
203
204 Return true if its argument is a :ctype:`PyLongObject` or a subtype of
205 :ctype:`PyLongObject`.
206
Georg Brandl116aa622007-08-15 14:28:22 +0000207
208.. cfunction:: int PyLong_CheckExact(PyObject *p)
209
210 Return true if its argument is a :ctype:`PyLongObject`, but not a subtype of
211 :ctype:`PyLongObject`.
212
Georg Brandl116aa622007-08-15 14:28:22 +0000213
214.. cfunction:: PyObject* PyLong_FromLong(long v)
215
216 Return a new :ctype:`PyLongObject` object from *v*, or *NULL* on failure.
217
Georg Brandl9914dd32007-12-02 23:08:39 +0000218 The current implementation keeps an array of integer objects for all integers
219 between ``-5`` and ``256``, when you create an int in that range you actually
220 just get back a reference to the existing object. So it should be possible to
221 change the value of ``1``. I suspect the behaviour of Python in this case is
222 undefined. :-)
223
Georg Brandl116aa622007-08-15 14:28:22 +0000224
225.. cfunction:: PyObject* PyLong_FromUnsignedLong(unsigned long v)
226
227 Return a new :ctype:`PyLongObject` object from a C :ctype:`unsigned long`, or
228 *NULL* on failure.
229
230
Georg Brandl9914dd32007-12-02 23:08:39 +0000231.. cfunction:: PyObject* PyLong_FromSsize_t(Py_ssize_t v)
232
233 Return a new :ctype:`PyLongObject` object with a value of *v*, or *NULL*
234 on failure.
235
236
237.. cfunction:: PyObject* PyLong_FromSize_t(size_t v)
238
239 Return a new :ctype:`PyLongObject` object with a value of *v*, or *NULL*
240 on failure.
241
242
Georg Brandl116aa622007-08-15 14:28:22 +0000243.. cfunction:: PyObject* PyLong_FromLongLong(PY_LONG_LONG v)
244
245 Return a new :ctype:`PyLongObject` object from a C :ctype:`long long`, or *NULL*
246 on failure.
247
248
249.. cfunction:: PyObject* PyLong_FromUnsignedLongLong(unsigned PY_LONG_LONG v)
250
251 Return a new :ctype:`PyLongObject` object from a C :ctype:`unsigned long long`,
252 or *NULL* on failure.
253
254
255.. cfunction:: PyObject* PyLong_FromDouble(double v)
256
257 Return a new :ctype:`PyLongObject` object from the integer part of *v*, or
258 *NULL* on failure.
259
260
261.. cfunction:: PyObject* PyLong_FromString(char *str, char **pend, int base)
262
Georg Brandl9914dd32007-12-02 23:08:39 +0000263 Return a new :ctype:`PyLongObject` based on the string value in *str*, which
264 is interpreted according to the radix in *base*. If *pend* is non-*NULL*,
Georg Brandl116aa622007-08-15 14:28:22 +0000265 ``*pend`` will point to the first character in *str* which follows the
Georg Brandl9914dd32007-12-02 23:08:39 +0000266 representation of the number. If *base* is ``0``, the radix will be
267 determined based on the leading characters of *str*: if *str* starts with
268 ``'0x'`` or ``'0X'``, radix 16 will be used; if *str* starts with ``'0o'`` or
269 ``'0O'``, radix 8 will be used; if *str* starts with ``'0b'`` or ``'0B'``,
270 radix 2 will be used; otherwise radix 10 will be used. If *base* is not
271 ``0``, it must be between ``2`` and ``36``, inclusive. Leading spaces are
272 ignored. If there are no digits, :exc:`ValueError` will be raised.
Georg Brandl116aa622007-08-15 14:28:22 +0000273
274
275.. cfunction:: PyObject* PyLong_FromUnicode(Py_UNICODE *u, Py_ssize_t length, int base)
276
Georg Brandl9914dd32007-12-02 23:08:39 +0000277 Convert a sequence of Unicode digits to a Python integer value. The Unicode
278 string is first encoded to a byte string using :cfunc:`PyUnicode_EncodeDecimal`
279 and then converted using :cfunc:`PyLong_FromString`.
Georg Brandl116aa622007-08-15 14:28:22 +0000280
Georg Brandl116aa622007-08-15 14:28:22 +0000281
282.. cfunction:: PyObject* PyLong_FromVoidPtr(void *p)
283
Georg Brandl9914dd32007-12-02 23:08:39 +0000284 Create a Python integer from the pointer *p*. The pointer value can be
285 retrieved from the resulting value using :cfunc:`PyLong_AsVoidPtr`.
Georg Brandl116aa622007-08-15 14:28:22 +0000286
287
Georg Brandl9914dd32007-12-02 23:08:39 +0000288.. XXX alias PyLong_AS_LONG (for now)
Georg Brandl116aa622007-08-15 14:28:22 +0000289.. cfunction:: long PyLong_AsLong(PyObject *pylong)
290
291 .. index::
292 single: LONG_MAX
293 single: OverflowError (built-in exception)
294
295 Return a C :ctype:`long` representation of the contents of *pylong*. If
Martin v. Löwisd1a1d1e2007-12-04 22:10:37 +0000296 *pylong* is greater than :const:`LONG_MAX`, raise an :exc:`OverflowError`,
297 and return -1. Convert non-long objects automatically to long first,
298 and return -1 if that raises exceptions.
299
300.. cfunction:: long PyLong_AsLongAndOverflow(PyObject *pylong, int* overflow)
301
302 Return a C :ctype:`long` representation of the contents of *pylong*. If
303 *pylong* is greater than :const:`LONG_MAX`, return -1 and
304 set `*overflow` to 1 (for overflow) or -1 (for underflow).
305 If an exception is set because of type errors, also return -1.
Georg Brandl116aa622007-08-15 14:28:22 +0000306
307
308.. cfunction:: unsigned long PyLong_AsUnsignedLong(PyObject *pylong)
309
310 .. index::
311 single: ULONG_MAX
312 single: OverflowError (built-in exception)
313
314 Return a C :ctype:`unsigned long` representation of the contents of *pylong*.
315 If *pylong* is greater than :const:`ULONG_MAX`, an :exc:`OverflowError` is
316 raised.
317
318
Georg Brandl9914dd32007-12-02 23:08:39 +0000319.. cfunction:: Py_ssize_t PyLong_AsSsize_t(PyObject *pylong)
320
321 .. index::
322 single: PY_SSIZE_T_MAX
323
324 Return a :ctype:`Py_ssize_t` representation of the contents of *pylong*. If
325 *pylong* is greater than :const:`PY_SSIZE_T_MAX`, an :exc:`OverflowError` is
326 raised.
327
328
329.. cfunction:: size_t PyLong_AsSize_t(PyObject *pylong)
330
331 Return a :ctype:`size_t` representation of the contents of *pylong*. If
332 *pylong* is greater than the maximum value for a :ctype:`size_t`, an
333 :exc:`OverflowError` is raised.
334
335
Georg Brandl116aa622007-08-15 14:28:22 +0000336.. cfunction:: PY_LONG_LONG PyLong_AsLongLong(PyObject *pylong)
337
Georg Brandl9914dd32007-12-02 23:08:39 +0000338 Return a C :ctype:`long long` from a Python integer. If *pylong* cannot be
Georg Brandl116aa622007-08-15 14:28:22 +0000339 represented as a :ctype:`long long`, an :exc:`OverflowError` will be raised.
340
Georg Brandl116aa622007-08-15 14:28:22 +0000341
342.. cfunction:: unsigned PY_LONG_LONG PyLong_AsUnsignedLongLong(PyObject *pylong)
343
Georg Brandl9914dd32007-12-02 23:08:39 +0000344 Return a C :ctype:`unsigned long long` from a Python integer. If *pylong*
Georg Brandl116aa622007-08-15 14:28:22 +0000345 cannot be represented as an :ctype:`unsigned long long`, an :exc:`OverflowError`
346 will be raised if the value is positive, or a :exc:`TypeError` will be raised if
347 the value is negative.
348
Georg Brandl116aa622007-08-15 14:28:22 +0000349
350.. cfunction:: unsigned long PyLong_AsUnsignedLongMask(PyObject *io)
351
Georg Brandl9914dd32007-12-02 23:08:39 +0000352 Return a C :ctype:`unsigned long` from a Python integer, without checking for
353 overflow.
Georg Brandl116aa622007-08-15 14:28:22 +0000354
Georg Brandl116aa622007-08-15 14:28:22 +0000355
356.. cfunction:: unsigned PY_LONG_LONG PyLong_AsUnsignedLongLongMask(PyObject *io)
357
Georg Brandl9914dd32007-12-02 23:08:39 +0000358 Return a C :ctype:`unsigned long long` from a Python integer, without
Georg Brandl116aa622007-08-15 14:28:22 +0000359 checking for overflow.
360
Georg Brandl116aa622007-08-15 14:28:22 +0000361
362.. cfunction:: double PyLong_AsDouble(PyObject *pylong)
363
364 Return a C :ctype:`double` representation of the contents of *pylong*. If
365 *pylong* cannot be approximately represented as a :ctype:`double`, an
366 :exc:`OverflowError` exception is raised and ``-1.0`` will be returned.
367
368
369.. cfunction:: void* PyLong_AsVoidPtr(PyObject *pylong)
370
Georg Brandl9914dd32007-12-02 23:08:39 +0000371 Convert a Python integer *pylong* to a C :ctype:`void` pointer. If *pylong*
372 cannot be converted, an :exc:`OverflowError` will be raised. This is only
373 assured to produce a usable :ctype:`void` pointer for values created with
374 :cfunc:`PyLong_FromVoidPtr`.
Georg Brandl116aa622007-08-15 14:28:22 +0000375
Georg Brandl9914dd32007-12-02 23:08:39 +0000376
Georg Brandl116aa622007-08-15 14:28:22 +0000377.. _floatobjects:
378
379Floating Point Objects
380----------------------
381
382.. index:: object: floating point
383
384
385.. ctype:: PyFloatObject
386
387 This subtype of :ctype:`PyObject` represents a Python floating point object.
388
389
390.. cvar:: PyTypeObject PyFloat_Type
391
392 .. index:: single: FloatType (in modules types)
393
394 This instance of :ctype:`PyTypeObject` represents the Python floating point
395 type. This is the same object as ``float`` and ``types.FloatType``.
396
397
398.. cfunction:: int PyFloat_Check(PyObject *p)
399
400 Return true if its argument is a :ctype:`PyFloatObject` or a subtype of
401 :ctype:`PyFloatObject`.
402
Georg Brandl116aa622007-08-15 14:28:22 +0000403
404.. cfunction:: int PyFloat_CheckExact(PyObject *p)
405
406 Return true if its argument is a :ctype:`PyFloatObject`, but not a subtype of
407 :ctype:`PyFloatObject`.
408
Georg Brandl116aa622007-08-15 14:28:22 +0000409
410.. cfunction:: PyObject* PyFloat_FromString(PyObject *str)
411
412 Create a :ctype:`PyFloatObject` object based on the string value in *str*, or
413 *NULL* on failure.
414
415
416.. cfunction:: PyObject* PyFloat_FromDouble(double v)
417
418 Create a :ctype:`PyFloatObject` object from *v*, or *NULL* on failure.
419
420
421.. cfunction:: double PyFloat_AsDouble(PyObject *pyfloat)
422
423 Return a C :ctype:`double` representation of the contents of *pyfloat*. If
424 *pyfloat* is not a Python floating point object but has a :meth:`__float__`
425 method, this method will first be called to convert *pyfloat* into a float.
426
427
428.. cfunction:: double PyFloat_AS_DOUBLE(PyObject *pyfloat)
429
430 Return a C :ctype:`double` representation of the contents of *pyfloat*, but
431 without error checking.
432
433
Christian Heimes93852662007-12-01 12:22:32 +0000434.. cfunction:: PyObject* PyFloat_GetInfo(void)
435
Christian Heimesd32ed6f2008-01-14 18:49:24 +0000436 Return a structseq instance which contains information about the
Christian Heimes93852662007-12-01 12:22:32 +0000437 precision, minimum and maximum values of a float. It's a thin wrapper
438 around the header file :file:`float.h`.
439
440
441.. cfunction:: double PyFloat_GetMax(void)
442
443 Return the maximum representable finite float *DBL_MAX* as C :ctype:`double`.
444
445
446.. cfunction:: double PyFloat_GetMin(void)
447
448 Return the minimum normalized positive float *DBL_MIN* as C :ctype:`double`.
449
450
Georg Brandl116aa622007-08-15 14:28:22 +0000451.. _complexobjects:
452
453Complex Number Objects
454----------------------
455
456.. index:: object: complex number
457
458Python's complex number objects are implemented as two distinct types when
459viewed from the C API: one is the Python object exposed to Python programs, and
460the other is a C structure which represents the actual complex number value.
461The API provides functions for working with both.
462
463
464Complex Numbers as C Structures
465^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
466
467Note that the functions which accept these structures as parameters and return
468them as results do so *by value* rather than dereferencing them through
469pointers. This is consistent throughout the API.
470
471
472.. ctype:: Py_complex
473
474 The C structure which corresponds to the value portion of a Python complex
475 number object. Most of the functions for dealing with complex number objects
476 use structures of this type as input or output values, as appropriate. It is
477 defined as::
478
479 typedef struct {
480 double real;
481 double imag;
482 } Py_complex;
483
484
485.. cfunction:: Py_complex _Py_c_sum(Py_complex left, Py_complex right)
486
487 Return the sum of two complex numbers, using the C :ctype:`Py_complex`
488 representation.
489
490
491.. cfunction:: Py_complex _Py_c_diff(Py_complex left, Py_complex right)
492
493 Return the difference between two complex numbers, using the C
494 :ctype:`Py_complex` representation.
495
496
497.. cfunction:: Py_complex _Py_c_neg(Py_complex complex)
498
499 Return the negation of the complex number *complex*, using the C
500 :ctype:`Py_complex` representation.
501
502
503.. cfunction:: Py_complex _Py_c_prod(Py_complex left, Py_complex right)
504
505 Return the product of two complex numbers, using the C :ctype:`Py_complex`
506 representation.
507
508
509.. cfunction:: Py_complex _Py_c_quot(Py_complex dividend, Py_complex divisor)
510
511 Return the quotient of two complex numbers, using the C :ctype:`Py_complex`
512 representation.
513
514
515.. cfunction:: Py_complex _Py_c_pow(Py_complex num, Py_complex exp)
516
517 Return the exponentiation of *num* by *exp*, using the C :ctype:`Py_complex`
518 representation.
519
520
521Complex Numbers as Python Objects
522^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
523
524
525.. ctype:: PyComplexObject
526
527 This subtype of :ctype:`PyObject` represents a Python complex number object.
528
529
530.. cvar:: PyTypeObject PyComplex_Type
531
532 This instance of :ctype:`PyTypeObject` represents the Python complex number
533 type. It is the same object as ``complex`` and ``types.ComplexType``.
534
535
536.. cfunction:: int PyComplex_Check(PyObject *p)
537
538 Return true if its argument is a :ctype:`PyComplexObject` or a subtype of
539 :ctype:`PyComplexObject`.
540
Georg Brandl116aa622007-08-15 14:28:22 +0000541
542.. cfunction:: int PyComplex_CheckExact(PyObject *p)
543
544 Return true if its argument is a :ctype:`PyComplexObject`, but not a subtype of
545 :ctype:`PyComplexObject`.
546
Georg Brandl116aa622007-08-15 14:28:22 +0000547
548.. cfunction:: PyObject* PyComplex_FromCComplex(Py_complex v)
549
550 Create a new Python complex number object from a C :ctype:`Py_complex` value.
551
552
553.. cfunction:: PyObject* PyComplex_FromDoubles(double real, double imag)
554
555 Return a new :ctype:`PyComplexObject` object from *real* and *imag*.
556
557
558.. cfunction:: double PyComplex_RealAsDouble(PyObject *op)
559
560 Return the real part of *op* as a C :ctype:`double`.
561
562
563.. cfunction:: double PyComplex_ImagAsDouble(PyObject *op)
564
565 Return the imaginary part of *op* as a C :ctype:`double`.
566
567
568.. cfunction:: Py_complex PyComplex_AsCComplex(PyObject *op)
569
570 Return the :ctype:`Py_complex` value of the complex number *op*.
571
Georg Brandl321976b2007-09-01 12:33:24 +0000572 If *op* is not a Python complex number object but has a :meth:`__complex__`
573 method, this method will first be called to convert *op* to a Python complex
574 number object.
Georg Brandl116aa622007-08-15 14:28:22 +0000575
576
577.. _sequenceobjects:
578
579Sequence Objects
580================
581
582.. index:: object: sequence
583
584Generic operations on sequence objects were discussed in the previous chapter;
585this section deals with the specific kinds of sequence objects that are
586intrinsic to the Python language.
587
Georg Brandl60bad0e2008-01-05 21:16:33 +0000588.. XXX sort out unicode, str, bytes and bytearray
Georg Brandl116aa622007-08-15 14:28:22 +0000589
590.. _stringobjects:
591
592String Objects
593--------------
594
595These functions raise :exc:`TypeError` when expecting a string parameter and are
596called with a non-string parameter.
597
598.. index:: object: string
599
600
601.. ctype:: PyStringObject
602
603 This subtype of :ctype:`PyObject` represents a Python string object.
604
605
606.. cvar:: PyTypeObject PyString_Type
607
608 .. index:: single: StringType (in module types)
609
610 This instance of :ctype:`PyTypeObject` represents the Python string type; it is
611 the same object as ``str`` and ``types.StringType`` in the Python layer. .
612
613
614.. cfunction:: int PyString_Check(PyObject *o)
615
616 Return true if the object *o* is a string object or an instance of a subtype of
617 the string type.
618
Georg Brandl116aa622007-08-15 14:28:22 +0000619
620.. cfunction:: int PyString_CheckExact(PyObject *o)
621
622 Return true if the object *o* is a string object, but not an instance of a
623 subtype of the string type.
624
Georg Brandl116aa622007-08-15 14:28:22 +0000625
626.. cfunction:: PyObject* PyString_FromString(const char *v)
627
628 Return a new string object with a copy of the string *v* as value on success,
629 and *NULL* on failure. The parameter *v* must not be *NULL*; it will not be
630 checked.
631
632
633.. cfunction:: PyObject* PyString_FromStringAndSize(const char *v, Py_ssize_t len)
634
635 Return a new string object with a copy of the string *v* as value and length
636 *len* on success, and *NULL* on failure. If *v* is *NULL*, the contents of the
637 string are uninitialized.
638
639
640.. cfunction:: PyObject* PyString_FromFormat(const char *format, ...)
641
642 Take a C :cfunc:`printf`\ -style *format* string and a variable number of
643 arguments, calculate the size of the resulting Python string and return a string
644 with the values formatted into it. The variable arguments must be C types and
645 must correspond exactly to the format characters in the *format* string. The
646 following format characters are allowed:
647
Georg Brandl321976b2007-09-01 12:33:24 +0000648 .. % XXX: This should be exactly the same as the table in PyErr_Format.
Georg Brandl116aa622007-08-15 14:28:22 +0000649 .. % One should just refer to the other.
Georg Brandl321976b2007-09-01 12:33:24 +0000650 .. % XXX: The descriptions for %zd and %zu are wrong, but the truth is complicated
Georg Brandl116aa622007-08-15 14:28:22 +0000651 .. % because not all compilers support the %z width modifier -- we fake it
652 .. % when necessary via interpolating PY_FORMAT_SIZE_T.
653 .. % %u, %lu, %zu should have "new in Python 2.5" blurbs.
654
655 +-------------------+---------------+--------------------------------+
656 | Format Characters | Type | Comment |
657 +===================+===============+================================+
658 | :attr:`%%` | *n/a* | The literal % character. |
659 +-------------------+---------------+--------------------------------+
660 | :attr:`%c` | int | A single character, |
661 | | | represented as an C int. |
662 +-------------------+---------------+--------------------------------+
663 | :attr:`%d` | int | Exactly equivalent to |
664 | | | ``printf("%d")``. |
665 +-------------------+---------------+--------------------------------+
666 | :attr:`%u` | unsigned int | Exactly equivalent to |
667 | | | ``printf("%u")``. |
668 +-------------------+---------------+--------------------------------+
669 | :attr:`%ld` | long | Exactly equivalent to |
670 | | | ``printf("%ld")``. |
671 +-------------------+---------------+--------------------------------+
672 | :attr:`%lu` | unsigned long | Exactly equivalent to |
673 | | | ``printf("%lu")``. |
674 +-------------------+---------------+--------------------------------+
675 | :attr:`%zd` | Py_ssize_t | Exactly equivalent to |
676 | | | ``printf("%zd")``. |
677 +-------------------+---------------+--------------------------------+
678 | :attr:`%zu` | size_t | Exactly equivalent to |
679 | | | ``printf("%zu")``. |
680 +-------------------+---------------+--------------------------------+
681 | :attr:`%i` | int | Exactly equivalent to |
682 | | | ``printf("%i")``. |
683 +-------------------+---------------+--------------------------------+
684 | :attr:`%x` | int | Exactly equivalent to |
685 | | | ``printf("%x")``. |
686 +-------------------+---------------+--------------------------------+
687 | :attr:`%s` | char\* | A null-terminated C character |
688 | | | array. |
689 +-------------------+---------------+--------------------------------+
690 | :attr:`%p` | void\* | The hex representation of a C |
691 | | | pointer. Mostly equivalent to |
692 | | | ``printf("%p")`` except that |
693 | | | it is guaranteed to start with |
694 | | | the literal ``0x`` regardless |
695 | | | of what the platform's |
696 | | | ``printf`` yields. |
697 +-------------------+---------------+--------------------------------+
698
699 An unrecognized format character causes all the rest of the format string to be
700 copied as-is to the result string, and any extra arguments discarded.
701
702
703.. cfunction:: PyObject* PyString_FromFormatV(const char *format, va_list vargs)
704
705 Identical to :func:`PyString_FromFormat` except that it takes exactly two
706 arguments.
707
708
709.. cfunction:: Py_ssize_t PyString_Size(PyObject *string)
710
711 Return the length of the string in string object *string*.
712
713
714.. cfunction:: Py_ssize_t PyString_GET_SIZE(PyObject *string)
715
716 Macro form of :cfunc:`PyString_Size` but without error checking.
717
718
719.. cfunction:: char* PyString_AsString(PyObject *string)
720
721 Return a NUL-terminated representation of the contents of *string*. The pointer
722 refers to the internal buffer of *string*, not a copy. The data must not be
723 modified in any way, unless the string was just created using
724 ``PyString_FromStringAndSize(NULL, size)``. It must not be deallocated. If
725 *string* is a Unicode object, this function computes the default encoding of
726 *string* and operates on that. If *string* is not a string object at all,
727 :cfunc:`PyString_AsString` returns *NULL* and raises :exc:`TypeError`.
728
729
730.. cfunction:: char* PyString_AS_STRING(PyObject *string)
731
732 Macro form of :cfunc:`PyString_AsString` but without error checking. Only
733 string objects are supported; no Unicode objects should be passed.
734
735
736.. cfunction:: int PyString_AsStringAndSize(PyObject *obj, char **buffer, Py_ssize_t *length)
737
738 Return a NUL-terminated representation of the contents of the object *obj*
739 through the output variables *buffer* and *length*.
740
741 The function accepts both string and Unicode objects as input. For Unicode
742 objects it returns the default encoded version of the object. If *length* is
743 *NULL*, the resulting buffer may not contain NUL characters; if it does, the
744 function returns ``-1`` and a :exc:`TypeError` is raised.
745
746 The buffer refers to an internal string buffer of *obj*, not a copy. The data
747 must not be modified in any way, unless the string was just created using
748 ``PyString_FromStringAndSize(NULL, size)``. It must not be deallocated. If
749 *string* is a Unicode object, this function computes the default encoding of
750 *string* and operates on that. If *string* is not a string object at all,
751 :cfunc:`PyString_AsStringAndSize` returns ``-1`` and raises :exc:`TypeError`.
752
753
754.. cfunction:: void PyString_Concat(PyObject **string, PyObject *newpart)
755
756 Create a new string object in *\*string* containing the contents of *newpart*
757 appended to *string*; the caller will own the new reference. The reference to
758 the old value of *string* will be stolen. If the new string cannot be created,
759 the old reference to *string* will still be discarded and the value of
760 *\*string* will be set to *NULL*; the appropriate exception will be set.
761
762
763.. cfunction:: void PyString_ConcatAndDel(PyObject **string, PyObject *newpart)
764
765 Create a new string object in *\*string* containing the contents of *newpart*
766 appended to *string*. This version decrements the reference count of *newpart*.
767
768
769.. cfunction:: int _PyString_Resize(PyObject **string, Py_ssize_t newsize)
770
771 A way to resize a string object even though it is "immutable". Only use this to
772 build up a brand new string object; don't use this if the string may already be
773 known in other parts of the code. It is an error to call this function if the
774 refcount on the input string object is not one. Pass the address of an existing
775 string object as an lvalue (it may be written into), and the new size desired.
776 On success, *\*string* holds the resized string object and ``0`` is returned;
777 the address in *\*string* may differ from its input value. If the reallocation
778 fails, the original string object at *\*string* is deallocated, *\*string* is
779 set to *NULL*, a memory exception is set, and ``-1`` is returned.
780
781
782.. cfunction:: PyObject* PyString_Format(PyObject *format, PyObject *args)
783
784 Return a new string object from *format* and *args*. Analogous to ``format %
785 args``. The *args* argument must be a tuple.
786
787
788.. cfunction:: void PyString_InternInPlace(PyObject **string)
789
790 Intern the argument *\*string* in place. The argument must be the address of a
791 pointer variable pointing to a Python string object. If there is an existing
792 interned string that is the same as *\*string*, it sets *\*string* to it
793 (decrementing the reference count of the old string object and incrementing the
794 reference count of the interned string object), otherwise it leaves *\*string*
795 alone and interns it (incrementing its reference count). (Clarification: even
796 though there is a lot of talk about reference counts, think of this function as
797 reference-count-neutral; you own the object after the call if and only if you
798 owned it before the call.)
799
800
801.. cfunction:: PyObject* PyString_InternFromString(const char *v)
802
803 A combination of :cfunc:`PyString_FromString` and
804 :cfunc:`PyString_InternInPlace`, returning either a new string object that has
805 been interned, or a new ("owned") reference to an earlier interned string object
806 with the same value.
807
808
809.. cfunction:: PyObject* PyString_Decode(const char *s, Py_ssize_t size, const char *encoding, const char *errors)
810
811 Create an object by decoding *size* bytes of the encoded buffer *s* using the
812 codec registered for *encoding*. *encoding* and *errors* have the same meaning
813 as the parameters of the same name in the :func:`unicode` built-in function.
814 The codec to be used is looked up using the Python codec registry. Return
815 *NULL* if an exception was raised by the codec.
816
817
818.. cfunction:: PyObject* PyString_AsDecodedObject(PyObject *str, const char *encoding, const char *errors)
819
820 Decode a string object by passing it to the codec registered for *encoding* and
821 return the result as Python object. *encoding* and *errors* have the same
822 meaning as the parameters of the same name in the string :meth:`encode` method.
823 The codec to be used is looked up using the Python codec registry. Return *NULL*
824 if an exception was raised by the codec.
825
826
Georg Brandl116aa622007-08-15 14:28:22 +0000827.. cfunction:: PyObject* PyString_AsEncodedObject(PyObject *str, const char *encoding, const char *errors)
828
829 Encode a string object using the codec registered for *encoding* and return the
830 result as Python object. *encoding* and *errors* have the same meaning as the
831 parameters of the same name in the string :meth:`encode` method. The codec to be
832 used is looked up using the Python codec registry. Return *NULL* if an exception
833 was raised by the codec.
834
835
836.. _unicodeobjects:
837
838Unicode Objects
839---------------
840
841.. sectionauthor:: Marc-Andre Lemburg <mal@lemburg.com>
842
843
844These are the basic Unicode object types used for the Unicode implementation in
845Python:
846
847.. % --- Unicode Type -------------------------------------------------------
848
849
850.. ctype:: Py_UNICODE
851
852 This type represents the storage type which is used by Python internally as
853 basis for holding Unicode ordinals. Python's default builds use a 16-bit type
854 for :ctype:`Py_UNICODE` and store Unicode values internally as UCS2. It is also
855 possible to build a UCS4 version of Python (most recent Linux distributions come
856 with UCS4 builds of Python). These builds then use a 32-bit type for
857 :ctype:`Py_UNICODE` and store Unicode data internally as UCS4. On platforms
858 where :ctype:`wchar_t` is available and compatible with the chosen Python
859 Unicode build variant, :ctype:`Py_UNICODE` is a typedef alias for
860 :ctype:`wchar_t` to enhance native platform compatibility. On all other
861 platforms, :ctype:`Py_UNICODE` is a typedef alias for either :ctype:`unsigned
862 short` (UCS2) or :ctype:`unsigned long` (UCS4).
863
864Note that UCS2 and UCS4 Python builds are not binary compatible. Please keep
865this in mind when writing extensions or interfaces.
866
867
868.. ctype:: PyUnicodeObject
869
870 This subtype of :ctype:`PyObject` represents a Python Unicode object.
871
872
873.. cvar:: PyTypeObject PyUnicode_Type
874
875 This instance of :ctype:`PyTypeObject` represents the Python Unicode type. It
Collin Winterd1d9a892007-08-28 06:09:47 +0000876 is exposed to Python code as ``str``.
Georg Brandl116aa622007-08-15 14:28:22 +0000877
878The following APIs are really C macros and can be used to do fast checks and to
879access internal read-only data of Unicode objects:
880
881
882.. cfunction:: int PyUnicode_Check(PyObject *o)
883
884 Return true if the object *o* is a Unicode object or an instance of a Unicode
885 subtype.
886
Georg Brandl116aa622007-08-15 14:28:22 +0000887
888.. cfunction:: int PyUnicode_CheckExact(PyObject *o)
889
890 Return true if the object *o* is a Unicode object, but not an instance of a
891 subtype.
892
Georg Brandl116aa622007-08-15 14:28:22 +0000893
894.. cfunction:: Py_ssize_t PyUnicode_GET_SIZE(PyObject *o)
895
896 Return the size of the object. *o* has to be a :ctype:`PyUnicodeObject` (not
897 checked).
898
899
900.. cfunction:: Py_ssize_t PyUnicode_GET_DATA_SIZE(PyObject *o)
901
902 Return the size of the object's internal buffer in bytes. *o* has to be a
903 :ctype:`PyUnicodeObject` (not checked).
904
905
906.. cfunction:: Py_UNICODE* PyUnicode_AS_UNICODE(PyObject *o)
907
908 Return a pointer to the internal :ctype:`Py_UNICODE` buffer of the object. *o*
909 has to be a :ctype:`PyUnicodeObject` (not checked).
910
911
912.. cfunction:: const char* PyUnicode_AS_DATA(PyObject *o)
913
914 Return a pointer to the internal buffer of the object. *o* has to be a
915 :ctype:`PyUnicodeObject` (not checked).
916
917Unicode provides many different character properties. The most often needed ones
918are available through these macros which are mapped to C functions depending on
919the Python configuration.
920
921.. % --- Unicode character properties ---------------------------------------
922
923
924.. cfunction:: int Py_UNICODE_ISSPACE(Py_UNICODE ch)
925
926 Return 1 or 0 depending on whether *ch* is a whitespace character.
927
928
929.. cfunction:: int Py_UNICODE_ISLOWER(Py_UNICODE ch)
930
931 Return 1 or 0 depending on whether *ch* is a lowercase character.
932
933
934.. cfunction:: int Py_UNICODE_ISUPPER(Py_UNICODE ch)
935
936 Return 1 or 0 depending on whether *ch* is an uppercase character.
937
938
939.. cfunction:: int Py_UNICODE_ISTITLE(Py_UNICODE ch)
940
941 Return 1 or 0 depending on whether *ch* is a titlecase character.
942
943
944.. cfunction:: int Py_UNICODE_ISLINEBREAK(Py_UNICODE ch)
945
946 Return 1 or 0 depending on whether *ch* is a linebreak character.
947
948
949.. cfunction:: int Py_UNICODE_ISDECIMAL(Py_UNICODE ch)
950
951 Return 1 or 0 depending on whether *ch* is a decimal character.
952
953
954.. cfunction:: int Py_UNICODE_ISDIGIT(Py_UNICODE ch)
955
956 Return 1 or 0 depending on whether *ch* is a digit character.
957
958
959.. cfunction:: int Py_UNICODE_ISNUMERIC(Py_UNICODE ch)
960
961 Return 1 or 0 depending on whether *ch* is a numeric character.
962
963
964.. cfunction:: int Py_UNICODE_ISALPHA(Py_UNICODE ch)
965
966 Return 1 or 0 depending on whether *ch* is an alphabetic character.
967
968
969.. cfunction:: int Py_UNICODE_ISALNUM(Py_UNICODE ch)
970
971 Return 1 or 0 depending on whether *ch* is an alphanumeric character.
972
973These APIs can be used for fast direct character conversions:
974
975
976.. cfunction:: Py_UNICODE Py_UNICODE_TOLOWER(Py_UNICODE ch)
977
978 Return the character *ch* converted to lower case.
979
980
981.. cfunction:: Py_UNICODE Py_UNICODE_TOUPPER(Py_UNICODE ch)
982
983 Return the character *ch* converted to upper case.
984
985
986.. cfunction:: Py_UNICODE Py_UNICODE_TOTITLE(Py_UNICODE ch)
987
988 Return the character *ch* converted to title case.
989
990
991.. cfunction:: int Py_UNICODE_TODECIMAL(Py_UNICODE ch)
992
993 Return the character *ch* converted to a decimal positive integer. Return
994 ``-1`` if this is not possible. This macro does not raise exceptions.
995
996
997.. cfunction:: int Py_UNICODE_TODIGIT(Py_UNICODE ch)
998
999 Return the character *ch* converted to a single digit integer. Return ``-1`` if
1000 this is not possible. This macro does not raise exceptions.
1001
1002
1003.. cfunction:: double Py_UNICODE_TONUMERIC(Py_UNICODE ch)
1004
1005 Return the character *ch* converted to a double. Return ``-1.0`` if this is not
1006 possible. This macro does not raise exceptions.
1007
1008To create Unicode objects and access their basic sequence properties, use these
1009APIs:
1010
1011.. % --- Plain Py_UNICODE ---------------------------------------------------
1012
1013
1014.. cfunction:: PyObject* PyUnicode_FromUnicode(const Py_UNICODE *u, Py_ssize_t size)
1015
1016 Create a Unicode Object from the Py_UNICODE buffer *u* of the given size. *u*
1017 may be *NULL* which causes the contents to be undefined. It is the user's
1018 responsibility to fill in the needed data. The buffer is copied into the new
1019 object. If the buffer is not *NULL*, the return value might be a shared object.
1020 Therefore, modification of the resulting Unicode object is only allowed when *u*
1021 is *NULL*.
1022
1023
1024.. cfunction:: PyObject* PyUnicode_FromStringAndSize(const char *u, Py_ssize_t size)
1025
1026 Create a Unicode Object from the char buffer *u*. The bytes will be interpreted
1027 as being UTF-8 encoded. *u* may also be *NULL* which
1028 causes the contents to be undefined. It is the user's responsibility to fill in
1029 the needed data. The buffer is copied into the new object. If the buffer is not
1030 *NULL*, the return value might be a shared object. Therefore, modification of
1031 the resulting Unicode object is only allowed when *u* is *NULL*.
1032
Georg Brandl116aa622007-08-15 14:28:22 +00001033
1034.. cfunction:: PyObject *PyUnicode_FromString(const char *u)
1035
1036 Create a Unicode object from an UTF-8 encoded null-terminated char buffer
1037 *u*.
1038
Georg Brandl116aa622007-08-15 14:28:22 +00001039
1040.. cfunction:: PyObject* PyUnicode_FromFormat(const char *format, ...)
1041
1042 Take a C :cfunc:`printf`\ -style *format* string and a variable number of
1043 arguments, calculate the size of the resulting Python unicode string and return
1044 a string with the values formatted into it. The variable arguments must be C
1045 types and must correspond exactly to the format characters in the *format*
1046 string. The following format characters are allowed:
1047
1048 .. % The descriptions for %zd and %zu are wrong, but the truth is complicated
1049 .. % because not all compilers support the %z width modifier -- we fake it
1050 .. % when necessary via interpolating PY_FORMAT_SIZE_T.
1051
1052 +-------------------+---------------------+--------------------------------+
1053 | Format Characters | Type | Comment |
1054 +===================+=====================+================================+
1055 | :attr:`%%` | *n/a* | The literal % character. |
1056 +-------------------+---------------------+--------------------------------+
1057 | :attr:`%c` | int | A single character, |
1058 | | | represented as an C int. |
1059 +-------------------+---------------------+--------------------------------+
1060 | :attr:`%d` | int | Exactly equivalent to |
1061 | | | ``printf("%d")``. |
1062 +-------------------+---------------------+--------------------------------+
1063 | :attr:`%u` | unsigned int | Exactly equivalent to |
1064 | | | ``printf("%u")``. |
1065 +-------------------+---------------------+--------------------------------+
1066 | :attr:`%ld` | long | Exactly equivalent to |
1067 | | | ``printf("%ld")``. |
1068 +-------------------+---------------------+--------------------------------+
1069 | :attr:`%lu` | unsigned long | Exactly equivalent to |
1070 | | | ``printf("%lu")``. |
1071 +-------------------+---------------------+--------------------------------+
1072 | :attr:`%zd` | Py_ssize_t | Exactly equivalent to |
1073 | | | ``printf("%zd")``. |
1074 +-------------------+---------------------+--------------------------------+
1075 | :attr:`%zu` | size_t | Exactly equivalent to |
1076 | | | ``printf("%zu")``. |
1077 +-------------------+---------------------+--------------------------------+
1078 | :attr:`%i` | int | Exactly equivalent to |
1079 | | | ``printf("%i")``. |
1080 +-------------------+---------------------+--------------------------------+
1081 | :attr:`%x` | int | Exactly equivalent to |
1082 | | | ``printf("%x")``. |
1083 +-------------------+---------------------+--------------------------------+
1084 | :attr:`%s` | char\* | A null-terminated C character |
1085 | | | array. |
1086 +-------------------+---------------------+--------------------------------+
1087 | :attr:`%p` | void\* | The hex representation of a C |
1088 | | | pointer. Mostly equivalent to |
1089 | | | ``printf("%p")`` except that |
1090 | | | it is guaranteed to start with |
1091 | | | the literal ``0x`` regardless |
1092 | | | of what the platform's |
1093 | | | ``printf`` yields. |
1094 +-------------------+---------------------+--------------------------------+
1095 | :attr:`%U` | PyObject\* | A unicode object. |
1096 +-------------------+---------------------+--------------------------------+
1097 | :attr:`%V` | PyObject\*, char \* | A unicode object (which may be |
1098 | | | *NULL*) and a null-terminated |
1099 | | | C character array as a second |
1100 | | | parameter (which will be used, |
1101 | | | if the first parameter is |
1102 | | | *NULL*). |
1103 +-------------------+---------------------+--------------------------------+
1104 | :attr:`%S` | PyObject\* | The result of calling |
1105 | | | :func:`PyObject_Unicode`. |
1106 +-------------------+---------------------+--------------------------------+
1107 | :attr:`%R` | PyObject\* | The result of calling |
1108 | | | :func:`PyObject_Repr`. |
1109 +-------------------+---------------------+--------------------------------+
1110
1111 An unrecognized format character causes all the rest of the format string to be
1112 copied as-is to the result string, and any extra arguments discarded.
1113
Georg Brandl116aa622007-08-15 14:28:22 +00001114
1115.. cfunction:: PyObject* PyUnicode_FromFormatV(const char *format, va_list vargs)
1116
1117 Identical to :func:`PyUnicode_FromFormat` except that it takes exactly two
1118 arguments.
1119
Georg Brandl116aa622007-08-15 14:28:22 +00001120
1121.. cfunction:: Py_UNICODE* PyUnicode_AsUnicode(PyObject *unicode)
1122
1123 Return a read-only pointer to the Unicode object's internal :ctype:`Py_UNICODE`
1124 buffer, *NULL* if *unicode* is not a Unicode object.
1125
1126
1127.. cfunction:: Py_ssize_t PyUnicode_GetSize(PyObject *unicode)
1128
1129 Return the length of the Unicode object.
1130
1131
1132.. cfunction:: PyObject* PyUnicode_FromEncodedObject(PyObject *obj, const char *encoding, const char *errors)
1133
1134 Coerce an encoded object *obj* to an Unicode object and return a reference with
1135 incremented refcount.
1136
1137 String and other char buffer compatible objects are decoded according to the
1138 given encoding and using the error handling defined by errors. Both can be
1139 *NULL* to have the interface use the default values (see the next section for
1140 details).
1141
1142 All other objects, including Unicode objects, cause a :exc:`TypeError` to be
1143 set.
1144
1145 The API returns *NULL* if there was an error. The caller is responsible for
1146 decref'ing the returned objects.
1147
1148
1149.. cfunction:: PyObject* PyUnicode_FromObject(PyObject *obj)
1150
1151 Shortcut for ``PyUnicode_FromEncodedObject(obj, NULL, "strict")`` which is used
1152 throughout the interpreter whenever coercion to Unicode is needed.
1153
1154If the platform supports :ctype:`wchar_t` and provides a header file wchar.h,
1155Python can interface directly to this type using the following functions.
1156Support is optimized if Python's own :ctype:`Py_UNICODE` type is identical to
1157the system's :ctype:`wchar_t`.
1158
1159.. % --- wchar_t support for platforms which support it ---------------------
1160
1161
1162.. cfunction:: PyObject* PyUnicode_FromWideChar(const wchar_t *w, Py_ssize_t size)
1163
1164 Create a Unicode object from the :ctype:`wchar_t` buffer *w* of the given size.
1165 Return *NULL* on failure.
1166
1167
1168.. cfunction:: Py_ssize_t PyUnicode_AsWideChar(PyUnicodeObject *unicode, wchar_t *w, Py_ssize_t size)
1169
1170 Copy the Unicode object contents into the :ctype:`wchar_t` buffer *w*. At most
1171 *size* :ctype:`wchar_t` characters are copied (excluding a possibly trailing
1172 0-termination character). Return the number of :ctype:`wchar_t` characters
1173 copied or -1 in case of an error. Note that the resulting :ctype:`wchar_t`
1174 string may or may not be 0-terminated. It is the responsibility of the caller
1175 to make sure that the :ctype:`wchar_t` string is 0-terminated in case this is
1176 required by the application.
1177
1178
1179.. _builtincodecs:
1180
1181Built-in Codecs
1182^^^^^^^^^^^^^^^
1183
1184Python provides a set of builtin codecs which are written in C for speed. All of
1185these codecs are directly usable via the following functions.
1186
1187Many of the following APIs take two arguments encoding and errors. These
1188parameters encoding and errors have the same semantics as the ones of the
1189builtin unicode() Unicode object constructor.
1190
1191Setting encoding to *NULL* causes the default encoding to be used which is
1192ASCII. The file system calls should use :cdata:`Py_FileSystemDefaultEncoding`
1193as the encoding for file names. This variable should be treated as read-only: On
1194some systems, it will be a pointer to a static string, on others, it will change
1195at run-time (such as when the application invokes setlocale).
1196
1197Error handling is set by errors which may also be set to *NULL* meaning to use
1198the default handling defined for the codec. Default error handling for all
1199builtin codecs is "strict" (:exc:`ValueError` is raised).
1200
1201The codecs all use a similar interface. Only deviation from the following
1202generic ones are documented for simplicity.
1203
1204These are the generic codec APIs:
1205
1206.. % --- Generic Codecs -----------------------------------------------------
1207
1208
1209.. cfunction:: PyObject* PyUnicode_Decode(const char *s, Py_ssize_t size, const char *encoding, const char *errors)
1210
1211 Create a Unicode object by decoding *size* bytes of the encoded string *s*.
1212 *encoding* and *errors* have the same meaning as the parameters of the same name
1213 in the :func:`unicode` builtin function. The codec to be used is looked up
1214 using the Python codec registry. Return *NULL* if an exception was raised by
1215 the codec.
1216
1217
1218.. cfunction:: PyObject* PyUnicode_Encode(const Py_UNICODE *s, Py_ssize_t size, const char *encoding, const char *errors)
1219
1220 Encode the :ctype:`Py_UNICODE` buffer of the given size and return a Python
1221 string object. *encoding* and *errors* have the same meaning as the parameters
1222 of the same name in the Unicode :meth:`encode` method. The codec to be used is
1223 looked up using the Python codec registry. Return *NULL* if an exception was
1224 raised by the codec.
1225
1226
1227.. cfunction:: PyObject* PyUnicode_AsEncodedString(PyObject *unicode, const char *encoding, const char *errors)
1228
1229 Encode a Unicode object and return the result as Python string object.
1230 *encoding* and *errors* have the same meaning as the parameters of the same name
1231 in the Unicode :meth:`encode` method. The codec to be used is looked up using
1232 the Python codec registry. Return *NULL* if an exception was raised by the
1233 codec.
1234
1235These are the UTF-8 codec APIs:
1236
1237.. % --- UTF-8 Codecs -------------------------------------------------------
1238
1239
1240.. cfunction:: PyObject* PyUnicode_DecodeUTF8(const char *s, Py_ssize_t size, const char *errors)
1241
1242 Create a Unicode object by decoding *size* bytes of the UTF-8 encoded string
1243 *s*. Return *NULL* if an exception was raised by the codec.
1244
1245
1246.. cfunction:: PyObject* PyUnicode_DecodeUTF8Stateful(const char *s, Py_ssize_t size, const char *errors, Py_ssize_t *consumed)
1247
1248 If *consumed* is *NULL*, behave like :cfunc:`PyUnicode_DecodeUTF8`. If
1249 *consumed* is not *NULL*, trailing incomplete UTF-8 byte sequences will not be
1250 treated as an error. Those bytes will not be decoded and the number of bytes
1251 that have been decoded will be stored in *consumed*.
1252
Georg Brandl116aa622007-08-15 14:28:22 +00001253
1254.. cfunction:: PyObject* PyUnicode_EncodeUTF8(const Py_UNICODE *s, Py_ssize_t size, const char *errors)
1255
1256 Encode the :ctype:`Py_UNICODE` buffer of the given size using UTF-8 and return a
1257 Python string object. Return *NULL* if an exception was raised by the codec.
1258
1259
1260.. cfunction:: PyObject* PyUnicode_AsUTF8String(PyObject *unicode)
1261
Christian Heimes587c2bf2008-01-19 16:21:02 +00001262 Encode a Unicode object using UTF-8 and return the result as Python string
Georg Brandl116aa622007-08-15 14:28:22 +00001263 object. Error handling is "strict". Return *NULL* if an exception was raised
1264 by the codec.
1265
Walter Dörwald41980ca2007-08-16 21:55:45 +00001266These are the UTF-32 codec APIs:
1267
1268.. % --- UTF-32 Codecs ------------------------------------------------------ */
1269
1270
1271.. cfunction:: PyObject* PyUnicode_DecodeUTF32(const char *s, Py_ssize_t size, const char *errors, int *byteorder)
1272
1273 Decode *length* bytes from a UTF-32 encoded buffer string and return the
1274 corresponding Unicode object. *errors* (if non-*NULL*) defines the error
1275 handling. It defaults to "strict".
1276
1277 If *byteorder* is non-*NULL*, the decoder starts decoding using the given byte
1278 order::
1279
1280 *byteorder == -1: little endian
1281 *byteorder == 0: native order
1282 *byteorder == 1: big endian
1283
1284 and then switches if the first four bytes of the input data are a byte order mark
1285 (BOM) and the specified byte order is native order. This BOM is not copied into
1286 the resulting Unicode string. After completion, *\*byteorder* is set to the
1287 current byte order at the end of input data.
1288
1289 In a narrow build codepoints outside the BMP will be decoded as surrogate pairs.
1290
1291 If *byteorder* is *NULL*, the codec starts in native order mode.
1292
1293 Return *NULL* if an exception was raised by the codec.
1294
Walter Dörwald41980ca2007-08-16 21:55:45 +00001295
1296.. cfunction:: PyObject* PyUnicode_DecodeUTF32Stateful(const char *s, Py_ssize_t size, const char *errors, int *byteorder, Py_ssize_t *consumed)
1297
1298 If *consumed* is *NULL*, behave like :cfunc:`PyUnicode_DecodeUTF32`. If
1299 *consumed* is not *NULL*, :cfunc:`PyUnicode_DecodeUTF32Stateful` will not treat
1300 trailing incomplete UTF-32 byte sequences (such as a number of bytes not divisible
1301 by four) as an error. Those bytes will not be decoded and the number of bytes
1302 that have been decoded will be stored in *consumed*.
1303
Walter Dörwald41980ca2007-08-16 21:55:45 +00001304
1305.. cfunction:: PyObject* PyUnicode_EncodeUTF32(const Py_UNICODE *s, Py_ssize_t size, const char *errors, int byteorder)
1306
1307 Return a Python bytes object holding the UTF-32 encoded value of the Unicode
1308 data in *s*. If *byteorder* is not ``0``, output is written according to the
1309 following byte order::
1310
1311 byteorder == -1: little endian
1312 byteorder == 0: native byte order (writes a BOM mark)
1313 byteorder == 1: big endian
1314
1315 If byteorder is ``0``, the output string will always start with the Unicode BOM
1316 mark (U+FEFF). In the other two modes, no BOM mark is prepended.
1317
1318 If *Py_UNICODE_WIDE* is not defined, surrogate pairs will be output
1319 as a single codepoint.
1320
1321 Return *NULL* if an exception was raised by the codec.
1322
1323
1324.. cfunction:: PyObject* PyUnicode_AsUTF32String(PyObject *unicode)
1325
1326 Return a Python string using the UTF-32 encoding in native byte order. The
1327 string always starts with a BOM mark. Error handling is "strict". Return
1328 *NULL* if an exception was raised by the codec.
1329
Walter Dörwald19e62382007-08-17 16:23:21 +00001330
Georg Brandl116aa622007-08-15 14:28:22 +00001331These are the UTF-16 codec APIs:
1332
1333.. % --- UTF-16 Codecs ------------------------------------------------------ */
1334
1335
1336.. cfunction:: PyObject* PyUnicode_DecodeUTF16(const char *s, Py_ssize_t size, const char *errors, int *byteorder)
1337
1338 Decode *length* bytes from a UTF-16 encoded buffer string and return the
1339 corresponding Unicode object. *errors* (if non-*NULL*) defines the error
1340 handling. It defaults to "strict".
1341
1342 If *byteorder* is non-*NULL*, the decoder starts decoding using the given byte
1343 order::
1344
1345 *byteorder == -1: little endian
1346 *byteorder == 0: native order
1347 *byteorder == 1: big endian
1348
1349 and then switches if the first two bytes of the input data are a byte order mark
1350 (BOM) and the specified byte order is native order. This BOM is not copied into
1351 the resulting Unicode string. After completion, *\*byteorder* is set to the
Walter Dörwaldd9a15792007-08-16 16:55:51 +00001352 current byte order at the end of input data.
Georg Brandl116aa622007-08-15 14:28:22 +00001353
1354 If *byteorder* is *NULL*, the codec starts in native order mode.
1355
1356 Return *NULL* if an exception was raised by the codec.
1357
1358
1359.. cfunction:: PyObject* PyUnicode_DecodeUTF16Stateful(const char *s, Py_ssize_t size, const char *errors, int *byteorder, Py_ssize_t *consumed)
1360
1361 If *consumed* is *NULL*, behave like :cfunc:`PyUnicode_DecodeUTF16`. If
1362 *consumed* is not *NULL*, :cfunc:`PyUnicode_DecodeUTF16Stateful` will not treat
1363 trailing incomplete UTF-16 byte sequences (such as an odd number of bytes or a
1364 split surrogate pair) as an error. Those bytes will not be decoded and the
1365 number of bytes that have been decoded will be stored in *consumed*.
1366
Georg Brandl116aa622007-08-15 14:28:22 +00001367
1368.. cfunction:: PyObject* PyUnicode_EncodeUTF16(const Py_UNICODE *s, Py_ssize_t size, const char *errors, int byteorder)
1369
1370 Return a Python string object holding the UTF-16 encoded value of the Unicode
1371 data in *s*. If *byteorder* is not ``0``, output is written according to the
1372 following byte order::
1373
1374 byteorder == -1: little endian
1375 byteorder == 0: native byte order (writes a BOM mark)
1376 byteorder == 1: big endian
1377
1378 If byteorder is ``0``, the output string will always start with the Unicode BOM
1379 mark (U+FEFF). In the other two modes, no BOM mark is prepended.
1380
1381 If *Py_UNICODE_WIDE* is defined, a single :ctype:`Py_UNICODE` value may get
1382 represented as a surrogate pair. If it is not defined, each :ctype:`Py_UNICODE`
1383 values is interpreted as an UCS-2 character.
1384
1385 Return *NULL* if an exception was raised by the codec.
1386
1387
1388.. cfunction:: PyObject* PyUnicode_AsUTF16String(PyObject *unicode)
1389
1390 Return a Python string using the UTF-16 encoding in native byte order. The
1391 string always starts with a BOM mark. Error handling is "strict". Return
1392 *NULL* if an exception was raised by the codec.
1393
1394These are the "Unicode Escape" codec APIs:
1395
1396.. % --- Unicode-Escape Codecs ----------------------------------------------
1397
1398
1399.. cfunction:: PyObject* PyUnicode_DecodeUnicodeEscape(const char *s, Py_ssize_t size, const char *errors)
1400
1401 Create a Unicode object by decoding *size* bytes of the Unicode-Escape encoded
1402 string *s*. Return *NULL* if an exception was raised by the codec.
1403
1404
1405.. cfunction:: PyObject* PyUnicode_EncodeUnicodeEscape(const Py_UNICODE *s, Py_ssize_t size)
1406
1407 Encode the :ctype:`Py_UNICODE` buffer of the given size using Unicode-Escape and
1408 return a Python string object. Return *NULL* if an exception was raised by the
1409 codec.
1410
1411
1412.. cfunction:: PyObject* PyUnicode_AsUnicodeEscapeString(PyObject *unicode)
1413
Christian Heimes587c2bf2008-01-19 16:21:02 +00001414 Encode a Unicode object using Unicode-Escape and return the result as Python
Georg Brandl116aa622007-08-15 14:28:22 +00001415 string object. Error handling is "strict". Return *NULL* if an exception was
1416 raised by the codec.
1417
1418These are the "Raw Unicode Escape" codec APIs:
1419
1420.. % --- Raw-Unicode-Escape Codecs ------------------------------------------
1421
1422
1423.. cfunction:: PyObject* PyUnicode_DecodeRawUnicodeEscape(const char *s, Py_ssize_t size, const char *errors)
1424
1425 Create a Unicode object by decoding *size* bytes of the Raw-Unicode-Escape
1426 encoded string *s*. Return *NULL* if an exception was raised by the codec.
1427
1428
1429.. cfunction:: PyObject* PyUnicode_EncodeRawUnicodeEscape(const Py_UNICODE *s, Py_ssize_t size, const char *errors)
1430
1431 Encode the :ctype:`Py_UNICODE` buffer of the given size using Raw-Unicode-Escape
1432 and return a Python string object. Return *NULL* if an exception was raised by
1433 the codec.
1434
1435
1436.. cfunction:: PyObject* PyUnicode_AsRawUnicodeEscapeString(PyObject *unicode)
1437
Christian Heimes587c2bf2008-01-19 16:21:02 +00001438 Encode a Unicode object using Raw-Unicode-Escape and return the result as
Georg Brandl116aa622007-08-15 14:28:22 +00001439 Python string object. Error handling is "strict". Return *NULL* if an exception
1440 was raised by the codec.
1441
1442These are the Latin-1 codec APIs: Latin-1 corresponds to the first 256 Unicode
1443ordinals and only these are accepted by the codecs during encoding.
1444
1445.. % --- Latin-1 Codecs -----------------------------------------------------
1446
1447
1448.. cfunction:: PyObject* PyUnicode_DecodeLatin1(const char *s, Py_ssize_t size, const char *errors)
1449
1450 Create a Unicode object by decoding *size* bytes of the Latin-1 encoded string
1451 *s*. Return *NULL* if an exception was raised by the codec.
1452
1453
1454.. cfunction:: PyObject* PyUnicode_EncodeLatin1(const Py_UNICODE *s, Py_ssize_t size, const char *errors)
1455
1456 Encode the :ctype:`Py_UNICODE` buffer of the given size using Latin-1 and return
1457 a Python string object. Return *NULL* if an exception was raised by the codec.
1458
1459
1460.. cfunction:: PyObject* PyUnicode_AsLatin1String(PyObject *unicode)
1461
Christian Heimes587c2bf2008-01-19 16:21:02 +00001462 Encode a Unicode object using Latin-1 and return the result as Python string
Georg Brandl116aa622007-08-15 14:28:22 +00001463 object. Error handling is "strict". Return *NULL* if an exception was raised
1464 by the codec.
1465
1466These are the ASCII codec APIs. Only 7-bit ASCII data is accepted. All other
1467codes generate errors.
1468
1469.. % --- ASCII Codecs -------------------------------------------------------
1470
1471
1472.. cfunction:: PyObject* PyUnicode_DecodeASCII(const char *s, Py_ssize_t size, const char *errors)
1473
1474 Create a Unicode object by decoding *size* bytes of the ASCII encoded string
1475 *s*. Return *NULL* if an exception was raised by the codec.
1476
1477
1478.. cfunction:: PyObject* PyUnicode_EncodeASCII(const Py_UNICODE *s, Py_ssize_t size, const char *errors)
1479
1480 Encode the :ctype:`Py_UNICODE` buffer of the given size using ASCII and return a
1481 Python string object. Return *NULL* if an exception was raised by the codec.
1482
1483
1484.. cfunction:: PyObject* PyUnicode_AsASCIIString(PyObject *unicode)
1485
Christian Heimes587c2bf2008-01-19 16:21:02 +00001486 Encode a Unicode object using ASCII and return the result as Python string
Georg Brandl116aa622007-08-15 14:28:22 +00001487 object. Error handling is "strict". Return *NULL* if an exception was raised
1488 by the codec.
1489
1490These are the mapping codec APIs:
1491
1492.. % --- Character Map Codecs -----------------------------------------------
1493
1494This codec is special in that it can be used to implement many different codecs
1495(and this is in fact what was done to obtain most of the standard codecs
1496included in the :mod:`encodings` package). The codec uses mapping to encode and
1497decode characters.
1498
1499Decoding mappings must map single string characters to single Unicode
1500characters, integers (which are then interpreted as Unicode ordinals) or None
1501(meaning "undefined mapping" and causing an error).
1502
1503Encoding mappings must map single Unicode characters to single string
1504characters, integers (which are then interpreted as Latin-1 ordinals) or None
1505(meaning "undefined mapping" and causing an error).
1506
1507The mapping objects provided must only support the __getitem__ mapping
1508interface.
1509
1510If a character lookup fails with a LookupError, the character is copied as-is
1511meaning that its ordinal value will be interpreted as Unicode or Latin-1 ordinal
1512resp. Because of this, mappings only need to contain those mappings which map
1513characters to different code points.
1514
1515
1516.. cfunction:: PyObject* PyUnicode_DecodeCharmap(const char *s, Py_ssize_t size, PyObject *mapping, const char *errors)
1517
1518 Create a Unicode object by decoding *size* bytes of the encoded string *s* using
1519 the given *mapping* object. Return *NULL* if an exception was raised by the
1520 codec. If *mapping* is *NULL* latin-1 decoding will be done. Else it can be a
1521 dictionary mapping byte or a unicode string, which is treated as a lookup table.
1522 Byte values greater that the length of the string and U+FFFE "characters" are
1523 treated as "undefined mapping".
1524
Georg Brandl116aa622007-08-15 14:28:22 +00001525
1526.. cfunction:: PyObject* PyUnicode_EncodeCharmap(const Py_UNICODE *s, Py_ssize_t size, PyObject *mapping, const char *errors)
1527
1528 Encode the :ctype:`Py_UNICODE` buffer of the given size using the given
1529 *mapping* object and return a Python string object. Return *NULL* if an
1530 exception was raised by the codec.
1531
1532
1533.. cfunction:: PyObject* PyUnicode_AsCharmapString(PyObject *unicode, PyObject *mapping)
1534
Christian Heimes587c2bf2008-01-19 16:21:02 +00001535 Encode a Unicode object using the given *mapping* object and return the result
Georg Brandl116aa622007-08-15 14:28:22 +00001536 as Python string object. Error handling is "strict". Return *NULL* if an
1537 exception was raised by the codec.
1538
1539The following codec API is special in that maps Unicode to Unicode.
1540
1541
1542.. cfunction:: PyObject* PyUnicode_TranslateCharmap(const Py_UNICODE *s, Py_ssize_t size, PyObject *table, const char *errors)
1543
1544 Translate a :ctype:`Py_UNICODE` buffer of the given length by applying a
1545 character mapping *table* to it and return the resulting Unicode object. Return
1546 *NULL* when an exception was raised by the codec.
1547
1548 The *mapping* table must map Unicode ordinal integers to Unicode ordinal
1549 integers or None (causing deletion of the character).
1550
1551 Mapping tables need only provide the :meth:`__getitem__` interface; dictionaries
1552 and sequences work well. Unmapped character ordinals (ones which cause a
1553 :exc:`LookupError`) are left untouched and are copied as-is.
1554
1555These are the MBCS codec APIs. They are currently only available on Windows and
1556use the Win32 MBCS converters to implement the conversions. Note that MBCS (or
1557DBCS) is a class of encodings, not just one. The target encoding is defined by
1558the user settings on the machine running the codec.
1559
1560.. % --- MBCS codecs for Windows --------------------------------------------
1561
1562
1563.. cfunction:: PyObject* PyUnicode_DecodeMBCS(const char *s, Py_ssize_t size, const char *errors)
1564
1565 Create a Unicode object by decoding *size* bytes of the MBCS encoded string *s*.
1566 Return *NULL* if an exception was raised by the codec.
1567
1568
1569.. cfunction:: PyObject* PyUnicode_DecodeMBCSStateful(const char *s, int size, const char *errors, int *consumed)
1570
1571 If *consumed* is *NULL*, behave like :cfunc:`PyUnicode_DecodeMBCS`. If
1572 *consumed* is not *NULL*, :cfunc:`PyUnicode_DecodeMBCSStateful` will not decode
1573 trailing lead byte and the number of bytes that have been decoded will be stored
1574 in *consumed*.
1575
Georg Brandl116aa622007-08-15 14:28:22 +00001576
1577.. cfunction:: PyObject* PyUnicode_EncodeMBCS(const Py_UNICODE *s, Py_ssize_t size, const char *errors)
1578
1579 Encode the :ctype:`Py_UNICODE` buffer of the given size using MBCS and return a
1580 Python string object. Return *NULL* if an exception was raised by the codec.
1581
1582
1583.. cfunction:: PyObject* PyUnicode_AsMBCSString(PyObject *unicode)
1584
Christian Heimes587c2bf2008-01-19 16:21:02 +00001585 Encode a Unicode object using MBCS and return the result as Python string
Georg Brandl116aa622007-08-15 14:28:22 +00001586 object. Error handling is "strict". Return *NULL* if an exception was raised
1587 by the codec.
1588
1589.. % --- Methods & Slots ----------------------------------------------------
1590
1591
1592.. _unicodemethodsandslots:
1593
1594Methods and Slot Functions
1595^^^^^^^^^^^^^^^^^^^^^^^^^^
1596
1597The following APIs are capable of handling Unicode objects and strings on input
1598(we refer to them as strings in the descriptions) and return Unicode objects or
1599integers as appropriate.
1600
1601They all return *NULL* or ``-1`` if an exception occurs.
1602
1603
1604.. cfunction:: PyObject* PyUnicode_Concat(PyObject *left, PyObject *right)
1605
1606 Concat two strings giving a new Unicode string.
1607
1608
1609.. cfunction:: PyObject* PyUnicode_Split(PyObject *s, PyObject *sep, Py_ssize_t maxsplit)
1610
1611 Split a string giving a list of Unicode strings. If sep is *NULL*, splitting
1612 will be done at all whitespace substrings. Otherwise, splits occur at the given
1613 separator. At most *maxsplit* splits will be done. If negative, no limit is
1614 set. Separators are not included in the resulting list.
1615
1616
1617.. cfunction:: PyObject* PyUnicode_Splitlines(PyObject *s, int keepend)
1618
1619 Split a Unicode string at line breaks, returning a list of Unicode strings.
1620 CRLF is considered to be one line break. If *keepend* is 0, the Line break
1621 characters are not included in the resulting strings.
1622
1623
1624.. cfunction:: PyObject* PyUnicode_Translate(PyObject *str, PyObject *table, const char *errors)
1625
1626 Translate a string by applying a character mapping table to it and return the
1627 resulting Unicode object.
1628
1629 The mapping table must map Unicode ordinal integers to Unicode ordinal integers
1630 or None (causing deletion of the character).
1631
1632 Mapping tables need only provide the :meth:`__getitem__` interface; dictionaries
1633 and sequences work well. Unmapped character ordinals (ones which cause a
1634 :exc:`LookupError`) are left untouched and are copied as-is.
1635
1636 *errors* has the usual meaning for codecs. It may be *NULL* which indicates to
1637 use the default error handling.
1638
1639
1640.. cfunction:: PyObject* PyUnicode_Join(PyObject *separator, PyObject *seq)
1641
1642 Join a sequence of strings using the given separator and return the resulting
1643 Unicode string.
1644
1645
1646.. cfunction:: int PyUnicode_Tailmatch(PyObject *str, PyObject *substr, Py_ssize_t start, Py_ssize_t end, int direction)
1647
1648 Return 1 if *substr* matches *str*[*start*:*end*] at the given tail end
1649 (*direction* == -1 means to do a prefix match, *direction* == 1 a suffix match),
1650 0 otherwise. Return ``-1`` if an error occurred.
1651
1652
1653.. cfunction:: Py_ssize_t PyUnicode_Find(PyObject *str, PyObject *substr, Py_ssize_t start, Py_ssize_t end, int direction)
1654
1655 Return the first position of *substr* in *str*[*start*:*end*] using the given
1656 *direction* (*direction* == 1 means to do a forward search, *direction* == -1 a
1657 backward search). The return value is the index of the first match; a value of
1658 ``-1`` indicates that no match was found, and ``-2`` indicates that an error
1659 occurred and an exception has been set.
1660
1661
1662.. cfunction:: Py_ssize_t PyUnicode_Count(PyObject *str, PyObject *substr, Py_ssize_t start, Py_ssize_t end)
1663
1664 Return the number of non-overlapping occurrences of *substr* in
1665 ``str[start:end]``. Return ``-1`` if an error occurred.
1666
1667
1668.. cfunction:: PyObject* PyUnicode_Replace(PyObject *str, PyObject *substr, PyObject *replstr, Py_ssize_t maxcount)
1669
1670 Replace at most *maxcount* occurrences of *substr* in *str* with *replstr* and
1671 return the resulting Unicode object. *maxcount* == -1 means replace all
1672 occurrences.
1673
1674
1675.. cfunction:: int PyUnicode_Compare(PyObject *left, PyObject *right)
1676
1677 Compare two strings and return -1, 0, 1 for less than, equal, and greater than,
1678 respectively.
1679
1680
1681.. cfunction:: int PyUnicode_RichCompare(PyObject *left, PyObject *right, int op)
1682
1683 Rich compare two unicode strings and return one of the following:
1684
1685 * ``NULL`` in case an exception was raised
1686 * :const:`Py_True` or :const:`Py_False` for successful comparisons
1687 * :const:`Py_NotImplemented` in case the type combination is unknown
1688
1689 Note that :const:`Py_EQ` and :const:`Py_NE` comparisons can cause a
1690 :exc:`UnicodeWarning` in case the conversion of the arguments to Unicode fails
1691 with a :exc:`UnicodeDecodeError`.
1692
1693 Possible values for *op* are :const:`Py_GT`, :const:`Py_GE`, :const:`Py_EQ`,
1694 :const:`Py_NE`, :const:`Py_LT`, and :const:`Py_LE`.
1695
1696
1697.. cfunction:: PyObject* PyUnicode_Format(PyObject *format, PyObject *args)
1698
1699 Return a new string object from *format* and *args*; this is analogous to
1700 ``format % args``. The *args* argument must be a tuple.
1701
1702
1703.. cfunction:: int PyUnicode_Contains(PyObject *container, PyObject *element)
1704
1705 Check whether *element* is contained in *container* and return true or false
1706 accordingly.
1707
1708 *element* has to coerce to a one element Unicode string. ``-1`` is returned if
1709 there was an error.
1710
1711
1712.. cfunction:: void PyUnicode_InternInPlace(PyObject **string)
1713
1714 Intern the argument *\*string* in place. The argument must be the address of a
1715 pointer variable pointing to a Python unicode string object. If there is an
1716 existing interned string that is the same as *\*string*, it sets *\*string* to
1717 it (decrementing the reference count of the old string object and incrementing
1718 the reference count of the interned string object), otherwise it leaves
1719 *\*string* alone and interns it (incrementing its reference count).
1720 (Clarification: even though there is a lot of talk about reference counts, think
1721 of this function as reference-count-neutral; you own the object after the call
1722 if and only if you owned it before the call.)
1723
1724
1725.. cfunction:: PyObject* PyUnicode_InternFromString(const char *v)
1726
1727 A combination of :cfunc:`PyUnicode_FromString` and
1728 :cfunc:`PyUnicode_InternInPlace`, returning either a new unicode string object
1729 that has been interned, or a new ("owned") reference to an earlier interned
1730 string object with the same value.
1731
1732
1733.. _bufferobjects:
1734
1735Buffer Objects
1736--------------
1737
1738.. sectionauthor:: Greg Stein <gstein@lyra.org>
1739
1740
1741.. index::
1742 object: buffer
1743 single: buffer interface
1744
1745Python objects implemented in C can export a group of functions called the
1746"buffer interface." These functions can be used by an object to expose its data
1747in a raw, byte-oriented format. Clients of the object can use the buffer
1748interface to access the object data directly, without needing to copy it first.
1749
1750Two examples of objects that support the buffer interface are strings and
1751arrays. The string object exposes the character contents in the buffer
1752interface's byte-oriented form. An array can also expose its contents, but it
1753should be noted that array elements may be multi-byte values.
1754
1755An example user of the buffer interface is the file object's :meth:`write`
1756method. Any object that can export a series of bytes through the buffer
1757interface can be written to a file. There are a number of format codes to
1758:cfunc:`PyArg_ParseTuple` that operate against an object's buffer interface,
1759returning data from the target object.
1760
1761.. index:: single: PyBufferProcs
1762
1763More information on the buffer interface is provided in the section
1764:ref:`buffer-structs`, under the description for :ctype:`PyBufferProcs`.
1765
1766A "buffer object" is defined in the :file:`bufferobject.h` header (included by
1767:file:`Python.h`). These objects look very similar to string objects at the
1768Python programming level: they support slicing, indexing, concatenation, and
1769some other standard string operations. However, their data can come from one of
1770two sources: from a block of memory, or from another object which exports the
1771buffer interface.
1772
1773Buffer objects are useful as a way to expose the data from another object's
1774buffer interface to the Python programmer. They can also be used as a zero-copy
1775slicing mechanism. Using their ability to reference a block of memory, it is
1776possible to expose any data to the Python programmer quite easily. The memory
1777could be a large, constant array in a C extension, it could be a raw block of
1778memory for manipulation before passing to an operating system library, or it
1779could be used to pass around structured data in its native, in-memory format.
1780
1781
1782.. ctype:: PyBufferObject
1783
1784 This subtype of :ctype:`PyObject` represents a buffer object.
1785
1786
1787.. cvar:: PyTypeObject PyBuffer_Type
1788
1789 .. index:: single: BufferType (in module types)
1790
1791 The instance of :ctype:`PyTypeObject` which represents the Python buffer type;
1792 it is the same object as ``buffer`` and ``types.BufferType`` in the Python
1793 layer. .
1794
1795
1796.. cvar:: int Py_END_OF_BUFFER
1797
1798 This constant may be passed as the *size* parameter to
1799 :cfunc:`PyBuffer_FromObject` or :cfunc:`PyBuffer_FromReadWriteObject`. It
1800 indicates that the new :ctype:`PyBufferObject` should refer to *base* object
1801 from the specified *offset* to the end of its exported buffer. Using this
1802 enables the caller to avoid querying the *base* object for its length.
1803
1804
1805.. cfunction:: int PyBuffer_Check(PyObject *p)
1806
1807 Return true if the argument has type :cdata:`PyBuffer_Type`.
1808
1809
1810.. cfunction:: PyObject* PyBuffer_FromObject(PyObject *base, Py_ssize_t offset, Py_ssize_t size)
1811
1812 Return a new read-only buffer object. This raises :exc:`TypeError` if *base*
1813 doesn't support the read-only buffer protocol or doesn't provide exactly one
1814 buffer segment, or it raises :exc:`ValueError` if *offset* is less than zero.
1815 The buffer will hold a reference to the *base* object, and the buffer's contents
1816 will refer to the *base* object's buffer interface, starting as position
1817 *offset* and extending for *size* bytes. If *size* is :const:`Py_END_OF_BUFFER`,
1818 then the new buffer's contents extend to the length of the *base* object's
1819 exported buffer data.
1820
1821
1822.. cfunction:: PyObject* PyBuffer_FromReadWriteObject(PyObject *base, Py_ssize_t offset, Py_ssize_t size)
1823
1824 Return a new writable buffer object. Parameters and exceptions are similar to
1825 those for :cfunc:`PyBuffer_FromObject`. If the *base* object does not export
Sean Reifscheider54cf12b2007-09-17 17:55:36 +00001826 the writable buffer protocol, then :exc:`TypeError` is raised.
Georg Brandl116aa622007-08-15 14:28:22 +00001827
1828
1829.. cfunction:: PyObject* PyBuffer_FromMemory(void *ptr, Py_ssize_t size)
1830
1831 Return a new read-only buffer object that reads from a specified location in
1832 memory, with a specified size. The caller is responsible for ensuring that the
1833 memory buffer, passed in as *ptr*, is not deallocated while the returned buffer
1834 object exists. Raises :exc:`ValueError` if *size* is less than zero. Note that
1835 :const:`Py_END_OF_BUFFER` may *not* be passed for the *size* parameter;
1836 :exc:`ValueError` will be raised in that case.
1837
1838
1839.. cfunction:: PyObject* PyBuffer_FromReadWriteMemory(void *ptr, Py_ssize_t size)
1840
1841 Similar to :cfunc:`PyBuffer_FromMemory`, but the returned buffer is writable.
1842
1843
1844.. cfunction:: PyObject* PyBuffer_New(Py_ssize_t size)
1845
1846 Return a new writable buffer object that maintains its own memory buffer of
1847 *size* bytes. :exc:`ValueError` is returned if *size* is not zero or positive.
1848 Note that the memory buffer (as returned by :cfunc:`PyObject_AsWriteBuffer`) is
1849 not specifically aligned.
1850
1851
1852.. _tupleobjects:
1853
1854Tuple Objects
1855-------------
1856
1857.. index:: object: tuple
1858
1859
1860.. ctype:: PyTupleObject
1861
1862 This subtype of :ctype:`PyObject` represents a Python tuple object.
1863
1864
1865.. cvar:: PyTypeObject PyTuple_Type
1866
1867 .. index:: single: TupleType (in module types)
1868
1869 This instance of :ctype:`PyTypeObject` represents the Python tuple type; it is
1870 the same object as ``tuple`` and ``types.TupleType`` in the Python layer..
1871
1872
1873.. cfunction:: int PyTuple_Check(PyObject *p)
1874
1875 Return true if *p* is a tuple object or an instance of a subtype of the tuple
1876 type.
1877
Georg Brandl116aa622007-08-15 14:28:22 +00001878
1879.. cfunction:: int PyTuple_CheckExact(PyObject *p)
1880
1881 Return true if *p* is a tuple object, but not an instance of a subtype of the
1882 tuple type.
1883
Georg Brandl116aa622007-08-15 14:28:22 +00001884
1885.. cfunction:: PyObject* PyTuple_New(Py_ssize_t len)
1886
1887 Return a new tuple object of size *len*, or *NULL* on failure.
1888
1889
1890.. cfunction:: PyObject* PyTuple_Pack(Py_ssize_t n, ...)
1891
1892 Return a new tuple object of size *n*, or *NULL* on failure. The tuple values
1893 are initialized to the subsequent *n* C arguments pointing to Python objects.
1894 ``PyTuple_Pack(2, a, b)`` is equivalent to ``Py_BuildValue("(OO)", a, b)``.
1895
Georg Brandl116aa622007-08-15 14:28:22 +00001896
Thomas Wouters1b7f8912007-09-19 03:06:30 +00001897.. cfunction:: Py_ssize_t PyTuple_Size(PyObject *p)
Georg Brandl116aa622007-08-15 14:28:22 +00001898
1899 Take a pointer to a tuple object, and return the size of that tuple.
1900
1901
Thomas Wouters1b7f8912007-09-19 03:06:30 +00001902.. cfunction:: Py_ssize_t PyTuple_GET_SIZE(PyObject *p)
Georg Brandl116aa622007-08-15 14:28:22 +00001903
1904 Return the size of the tuple *p*, which must be non-*NULL* and point to a tuple;
1905 no error checking is performed.
1906
1907
1908.. cfunction:: PyObject* PyTuple_GetItem(PyObject *p, Py_ssize_t pos)
1909
1910 Return the object at position *pos* in the tuple pointed to by *p*. If *pos* is
1911 out of bounds, return *NULL* and sets an :exc:`IndexError` exception.
1912
1913
1914.. cfunction:: PyObject* PyTuple_GET_ITEM(PyObject *p, Py_ssize_t pos)
1915
1916 Like :cfunc:`PyTuple_GetItem`, but does no checking of its arguments.
1917
1918
1919.. cfunction:: PyObject* PyTuple_GetSlice(PyObject *p, Py_ssize_t low, Py_ssize_t high)
1920
1921 Take a slice of the tuple pointed to by *p* from *low* to *high* and return it
1922 as a new tuple.
1923
1924
1925.. cfunction:: int PyTuple_SetItem(PyObject *p, Py_ssize_t pos, PyObject *o)
1926
1927 Insert a reference to object *o* at position *pos* of the tuple pointed to by
1928 *p*. Return ``0`` on success.
1929
1930 .. note::
1931
1932 This function "steals" a reference to *o*.
1933
1934
1935.. cfunction:: void PyTuple_SET_ITEM(PyObject *p, Py_ssize_t pos, PyObject *o)
1936
1937 Like :cfunc:`PyTuple_SetItem`, but does no error checking, and should *only* be
1938 used to fill in brand new tuples.
1939
1940 .. note::
1941
1942 This function "steals" a reference to *o*.
1943
1944
1945.. cfunction:: int _PyTuple_Resize(PyObject **p, Py_ssize_t newsize)
1946
1947 Can be used to resize a tuple. *newsize* will be the new length of the tuple.
1948 Because tuples are *supposed* to be immutable, this should only be used if there
1949 is only one reference to the object. Do *not* use this if the tuple may already
1950 be known to some other part of the code. The tuple will always grow or shrink
1951 at the end. Think of this as destroying the old tuple and creating a new one,
1952 only more efficiently. Returns ``0`` on success. Client code should never
1953 assume that the resulting value of ``*p`` will be the same as before calling
1954 this function. If the object referenced by ``*p`` is replaced, the original
1955 ``*p`` is destroyed. On failure, returns ``-1`` and sets ``*p`` to *NULL*, and
1956 raises :exc:`MemoryError` or :exc:`SystemError`.
1957
Georg Brandl116aa622007-08-15 14:28:22 +00001958
1959.. _listobjects:
1960
1961List Objects
1962------------
1963
1964.. index:: object: list
1965
1966
1967.. ctype:: PyListObject
1968
1969 This subtype of :ctype:`PyObject` represents a Python list object.
1970
1971
1972.. cvar:: PyTypeObject PyList_Type
1973
1974 .. index:: single: ListType (in module types)
1975
1976 This instance of :ctype:`PyTypeObject` represents the Python list type. This is
1977 the same object as ``list`` and ``types.ListType`` in the Python layer.
1978
1979
1980.. cfunction:: int PyList_Check(PyObject *p)
1981
1982 Return true if *p* is a list object or an instance of a subtype of the list
1983 type.
1984
Georg Brandl116aa622007-08-15 14:28:22 +00001985
1986.. cfunction:: int PyList_CheckExact(PyObject *p)
1987
1988 Return true if *p* is a list object, but not an instance of a subtype of the
1989 list type.
1990
Georg Brandl116aa622007-08-15 14:28:22 +00001991
1992.. cfunction:: PyObject* PyList_New(Py_ssize_t len)
1993
1994 Return a new list of length *len* on success, or *NULL* on failure.
1995
1996 .. note::
1997
1998 If *length* is greater than zero, the returned list object's items are set to
1999 ``NULL``. Thus you cannot use abstract API functions such as
2000 :cfunc:`PySequence_SetItem` or expose the object to Python code before setting
2001 all items to a real object with :cfunc:`PyList_SetItem`.
2002
2003
2004.. cfunction:: Py_ssize_t PyList_Size(PyObject *list)
2005
2006 .. index:: builtin: len
2007
2008 Return the length of the list object in *list*; this is equivalent to
2009 ``len(list)`` on a list object.
2010
2011
2012.. cfunction:: Py_ssize_t PyList_GET_SIZE(PyObject *list)
2013
2014 Macro form of :cfunc:`PyList_Size` without error checking.
2015
2016
2017.. cfunction:: PyObject* PyList_GetItem(PyObject *list, Py_ssize_t index)
2018
2019 Return the object at position *pos* in the list pointed to by *p*. The position
2020 must be positive, indexing from the end of the list is not supported. If *pos*
2021 is out of bounds, return *NULL* and set an :exc:`IndexError` exception.
2022
2023
2024.. cfunction:: PyObject* PyList_GET_ITEM(PyObject *list, Py_ssize_t i)
2025
2026 Macro form of :cfunc:`PyList_GetItem` without error checking.
2027
2028
2029.. cfunction:: int PyList_SetItem(PyObject *list, Py_ssize_t index, PyObject *item)
2030
2031 Set the item at index *index* in list to *item*. Return ``0`` on success or
2032 ``-1`` on failure.
2033
2034 .. note::
2035
2036 This function "steals" a reference to *item* and discards a reference to an item
2037 already in the list at the affected position.
2038
2039
2040.. cfunction:: void PyList_SET_ITEM(PyObject *list, Py_ssize_t i, PyObject *o)
2041
2042 Macro form of :cfunc:`PyList_SetItem` without error checking. This is normally
2043 only used to fill in new lists where there is no previous content.
2044
2045 .. note::
2046
2047 This function "steals" a reference to *item*, and, unlike
2048 :cfunc:`PyList_SetItem`, does *not* discard a reference to any item that it
2049 being replaced; any reference in *list* at position *i* will be leaked.
2050
2051
2052.. cfunction:: int PyList_Insert(PyObject *list, Py_ssize_t index, PyObject *item)
2053
2054 Insert the item *item* into list *list* in front of index *index*. Return ``0``
2055 if successful; return ``-1`` and set an exception if unsuccessful. Analogous to
2056 ``list.insert(index, item)``.
2057
2058
2059.. cfunction:: int PyList_Append(PyObject *list, PyObject *item)
2060
2061 Append the object *item* at the end of list *list*. Return ``0`` if successful;
2062 return ``-1`` and set an exception if unsuccessful. Analogous to
2063 ``list.append(item)``.
2064
2065
2066.. cfunction:: PyObject* PyList_GetSlice(PyObject *list, Py_ssize_t low, Py_ssize_t high)
2067
2068 Return a list of the objects in *list* containing the objects *between* *low*
2069 and *high*. Return *NULL* and set an exception if unsuccessful. Analogous to
2070 ``list[low:high]``.
2071
2072
2073.. cfunction:: int PyList_SetSlice(PyObject *list, Py_ssize_t low, Py_ssize_t high, PyObject *itemlist)
2074
2075 Set the slice of *list* between *low* and *high* to the contents of *itemlist*.
2076 Analogous to ``list[low:high] = itemlist``. The *itemlist* may be *NULL*,
2077 indicating the assignment of an empty list (slice deletion). Return ``0`` on
2078 success, ``-1`` on failure.
2079
2080
2081.. cfunction:: int PyList_Sort(PyObject *list)
2082
2083 Sort the items of *list* in place. Return ``0`` on success, ``-1`` on failure.
2084 This is equivalent to ``list.sort()``.
2085
2086
2087.. cfunction:: int PyList_Reverse(PyObject *list)
2088
2089 Reverse the items of *list* in place. Return ``0`` on success, ``-1`` on
2090 failure. This is the equivalent of ``list.reverse()``.
2091
2092
2093.. cfunction:: PyObject* PyList_AsTuple(PyObject *list)
2094
2095 .. index:: builtin: tuple
2096
2097 Return a new tuple object containing the contents of *list*; equivalent to
2098 ``tuple(list)``.
2099
2100
2101.. _mapobjects:
2102
2103Mapping Objects
2104===============
2105
2106.. index:: object: mapping
2107
2108
2109.. _dictobjects:
2110
2111Dictionary Objects
2112------------------
2113
2114.. index:: object: dictionary
2115
2116
2117.. ctype:: PyDictObject
2118
2119 This subtype of :ctype:`PyObject` represents a Python dictionary object.
2120
2121
2122.. cvar:: PyTypeObject PyDict_Type
2123
2124 .. index::
2125 single: DictType (in module types)
2126 single: DictionaryType (in module types)
2127
2128 This instance of :ctype:`PyTypeObject` represents the Python dictionary type.
2129 This is exposed to Python programs as ``dict`` and ``types.DictType``.
2130
2131
2132.. cfunction:: int PyDict_Check(PyObject *p)
2133
2134 Return true if *p* is a dict object or an instance of a subtype of the dict
2135 type.
2136
Georg Brandl116aa622007-08-15 14:28:22 +00002137
2138.. cfunction:: int PyDict_CheckExact(PyObject *p)
2139
2140 Return true if *p* is a dict object, but not an instance of a subtype of the
2141 dict type.
2142
Georg Brandl116aa622007-08-15 14:28:22 +00002143
2144.. cfunction:: PyObject* PyDict_New()
2145
2146 Return a new empty dictionary, or *NULL* on failure.
2147
2148
2149.. cfunction:: PyObject* PyDictProxy_New(PyObject *dict)
2150
2151 Return a proxy object for a mapping which enforces read-only behavior. This is
2152 normally used to create a proxy to prevent modification of the dictionary for
2153 non-dynamic class types.
2154
Georg Brandl116aa622007-08-15 14:28:22 +00002155
2156.. cfunction:: void PyDict_Clear(PyObject *p)
2157
2158 Empty an existing dictionary of all key-value pairs.
2159
2160
2161.. cfunction:: int PyDict_Contains(PyObject *p, PyObject *key)
2162
2163 Determine if dictionary *p* contains *key*. If an item in *p* is matches *key*,
2164 return ``1``, otherwise return ``0``. On error, return ``-1``. This is
2165 equivalent to the Python expression ``key in p``.
2166
Georg Brandl116aa622007-08-15 14:28:22 +00002167
2168.. cfunction:: PyObject* PyDict_Copy(PyObject *p)
2169
2170 Return a new dictionary that contains the same key-value pairs as *p*.
2171
Georg Brandl116aa622007-08-15 14:28:22 +00002172
2173.. cfunction:: int PyDict_SetItem(PyObject *p, PyObject *key, PyObject *val)
2174
2175 Insert *value* into the dictionary *p* with a key of *key*. *key* must be
Guido van Rossum2cc30da2007-11-02 23:46:40 +00002176 :term:`hashable`; if it isn't, :exc:`TypeError` will be raised. Return ``0``
2177 on success or ``-1`` on failure.
Georg Brandl116aa622007-08-15 14:28:22 +00002178
2179
2180.. cfunction:: int PyDict_SetItemString(PyObject *p, const char *key, PyObject *val)
2181
2182 .. index:: single: PyString_FromString()
2183
2184 Insert *value* into the dictionary *p* using *key* as a key. *key* should be a
2185 :ctype:`char\*`. The key object is created using ``PyString_FromString(key)``.
2186 Return ``0`` on success or ``-1`` on failure.
2187
2188
2189.. cfunction:: int PyDict_DelItem(PyObject *p, PyObject *key)
2190
2191 Remove the entry in dictionary *p* with key *key*. *key* must be hashable; if it
2192 isn't, :exc:`TypeError` is raised. Return ``0`` on success or ``-1`` on
2193 failure.
2194
2195
2196.. cfunction:: int PyDict_DelItemString(PyObject *p, char *key)
2197
2198 Remove the entry in dictionary *p* which has a key specified by the string
2199 *key*. Return ``0`` on success or ``-1`` on failure.
2200
2201
2202.. cfunction:: PyObject* PyDict_GetItem(PyObject *p, PyObject *key)
2203
2204 Return the object from dictionary *p* which has a key *key*. Return *NULL* if
2205 the key *key* is not present, but *without* setting an exception.
2206
2207
2208.. cfunction:: PyObject* PyDict_GetItemString(PyObject *p, const char *key)
2209
2210 This is the same as :cfunc:`PyDict_GetItem`, but *key* is specified as a
2211 :ctype:`char\*`, rather than a :ctype:`PyObject\*`.
2212
2213
2214.. cfunction:: PyObject* PyDict_Items(PyObject *p)
2215
2216 Return a :ctype:`PyListObject` containing all the items from the dictionary, as
2217 in the dictionary method :meth:`dict.items`.
2218
2219
2220.. cfunction:: PyObject* PyDict_Keys(PyObject *p)
2221
2222 Return a :ctype:`PyListObject` containing all the keys from the dictionary, as
2223 in the dictionary method :meth:`dict.keys`.
2224
2225
2226.. cfunction:: PyObject* PyDict_Values(PyObject *p)
2227
2228 Return a :ctype:`PyListObject` containing all the values from the dictionary
2229 *p*, as in the dictionary method :meth:`dict.values`.
2230
2231
2232.. cfunction:: Py_ssize_t PyDict_Size(PyObject *p)
2233
2234 .. index:: builtin: len
2235
2236 Return the number of items in the dictionary. This is equivalent to ``len(p)``
2237 on a dictionary.
2238
2239
2240.. cfunction:: int PyDict_Next(PyObject *p, Py_ssize_t *ppos, PyObject **pkey, PyObject **pvalue)
2241
2242 Iterate over all key-value pairs in the dictionary *p*. The :ctype:`int`
2243 referred to by *ppos* must be initialized to ``0`` prior to the first call to
2244 this function to start the iteration; the function returns true for each pair in
2245 the dictionary, and false once all pairs have been reported. The parameters
2246 *pkey* and *pvalue* should either point to :ctype:`PyObject\*` variables that
2247 will be filled in with each key and value, respectively, or may be *NULL*. Any
2248 references returned through them are borrowed. *ppos* should not be altered
2249 during iteration. Its value represents offsets within the internal dictionary
2250 structure, and since the structure is sparse, the offsets are not consecutive.
2251
2252 For example::
2253
2254 PyObject *key, *value;
2255 Py_ssize_t pos = 0;
2256
2257 while (PyDict_Next(self->dict, &pos, &key, &value)) {
2258 /* do something interesting with the values... */
2259 ...
2260 }
2261
2262 The dictionary *p* should not be mutated during iteration. It is safe (since
2263 Python 2.1) to modify the values of the keys as you iterate over the dictionary,
2264 but only so long as the set of keys does not change. For example::
2265
2266 PyObject *key, *value;
2267 Py_ssize_t pos = 0;
2268
2269 while (PyDict_Next(self->dict, &pos, &key, &value)) {
Georg Brandld019fe22007-12-08 18:58:51 +00002270 long i = PyLong_AsLong(value);
2271 if (i == -1 && PyErr_Occurred()) {
2272 return -1;
2273 }
2274 PyObject *o = PyLong_FromLong(i + 1);
Georg Brandl116aa622007-08-15 14:28:22 +00002275 if (o == NULL)
2276 return -1;
2277 if (PyDict_SetItem(self->dict, key, o) < 0) {
2278 Py_DECREF(o);
2279 return -1;
2280 }
2281 Py_DECREF(o);
2282 }
2283
2284
2285.. cfunction:: int PyDict_Merge(PyObject *a, PyObject *b, int override)
2286
2287 Iterate over mapping object *b* adding key-value pairs to dictionary *a*. *b*
2288 may be a dictionary, or any object supporting :func:`PyMapping_Keys` and
2289 :func:`PyObject_GetItem`. If *override* is true, existing pairs in *a* will be
2290 replaced if a matching key is found in *b*, otherwise pairs will only be added
2291 if there is not a matching key in *a*. Return ``0`` on success or ``-1`` if an
2292 exception was raised.
2293
Georg Brandl116aa622007-08-15 14:28:22 +00002294
2295.. cfunction:: int PyDict_Update(PyObject *a, PyObject *b)
2296
2297 This is the same as ``PyDict_Merge(a, b, 1)`` in C, or ``a.update(b)`` in
2298 Python. Return ``0`` on success or ``-1`` if an exception was raised.
2299
Georg Brandl116aa622007-08-15 14:28:22 +00002300
2301.. cfunction:: int PyDict_MergeFromSeq2(PyObject *a, PyObject *seq2, int override)
2302
2303 Update or merge into dictionary *a*, from the key-value pairs in *seq2*. *seq2*
2304 must be an iterable object producing iterable objects of length 2, viewed as
2305 key-value pairs. In case of duplicate keys, the last wins if *override* is
2306 true, else the first wins. Return ``0`` on success or ``-1`` if an exception was
2307 raised. Equivalent Python (except for the return value)::
2308
2309 def PyDict_MergeFromSeq2(a, seq2, override):
2310 for key, value in seq2:
2311 if override or key not in a:
2312 a[key] = value
2313
Georg Brandl116aa622007-08-15 14:28:22 +00002314
2315.. _otherobjects:
2316
2317Other Objects
2318=============
2319
Georg Brandl116aa622007-08-15 14:28:22 +00002320.. _fileobjects:
2321
2322File Objects
2323------------
2324
2325.. index:: object: file
2326
2327Python's built-in file objects are implemented entirely on the :ctype:`FILE\*`
2328support from the C standard library. This is an implementation detail and may
2329change in future releases of Python.
2330
2331
2332.. ctype:: PyFileObject
2333
2334 This subtype of :ctype:`PyObject` represents a Python file object.
2335
2336
2337.. cvar:: PyTypeObject PyFile_Type
2338
2339 .. index:: single: FileType (in module types)
2340
2341 This instance of :ctype:`PyTypeObject` represents the Python file type. This is
2342 exposed to Python programs as ``file`` and ``types.FileType``.
2343
2344
2345.. cfunction:: int PyFile_Check(PyObject *p)
2346
2347 Return true if its argument is a :ctype:`PyFileObject` or a subtype of
2348 :ctype:`PyFileObject`.
2349
Georg Brandl116aa622007-08-15 14:28:22 +00002350
2351.. cfunction:: int PyFile_CheckExact(PyObject *p)
2352
2353 Return true if its argument is a :ctype:`PyFileObject`, but not a subtype of
2354 :ctype:`PyFileObject`.
2355
Georg Brandl116aa622007-08-15 14:28:22 +00002356
Guido van Rossum2dced8b2007-10-30 17:27:30 +00002357.. cfunction:: PyFile_FromFd(int fd, char *name, char *mode, int buffering, char *encoding, char *newline, int closefd)
Georg Brandl116aa622007-08-15 14:28:22 +00002358
Guido van Rossum40d20bc2007-10-22 00:09:51 +00002359 Create a new :ctype:`PyFileObject` from the file descriptor of an already
2360 opened file *fd*. The arguments *name*, *encoding* and *newline* can be
Guido van Rossum2dced8b2007-10-30 17:27:30 +00002361 *NULL* to use the defaults; *buffering* can be *-1* to use the default.
2362 Return *NULL* on failure.
Georg Brandl116aa622007-08-15 14:28:22 +00002363
Guido van Rossum40d20bc2007-10-22 00:09:51 +00002364 .. warning::
2365
2366 Take care when you are mixing streams and descriptors! For more
Georg Brandl083bea42007-10-23 18:26:17 +00002367 information, see `the GNU C Library docs
Guido van Rossum40d20bc2007-10-22 00:09:51 +00002368 <http://www.gnu.org/software/libc/manual/html_node/Stream_002fDescriptor-Precautions.html#Stream_002fDescriptor-Precautions>`_.
Georg Brandl116aa622007-08-15 14:28:22 +00002369
2370
Guido van Rossum40d20bc2007-10-22 00:09:51 +00002371.. cfunction:: int PyObject_AsFileDescriptor(PyObject *p)
Georg Brandl116aa622007-08-15 14:28:22 +00002372
Georg Brandl083bea42007-10-23 18:26:17 +00002373 Return the file descriptor associated with *p* as an :ctype:`int`. If the
Georg Brandl9914dd32007-12-02 23:08:39 +00002374 object is an integer, its value is returned. If not, the
Georg Brandl083bea42007-10-23 18:26:17 +00002375 object's :meth:`fileno` method is called if it exists; the method must return
2376 an integer, which is returned as the file descriptor value. Sets an
2377 exception and returns ``-1`` on failure.
Georg Brandl116aa622007-08-15 14:28:22 +00002378
2379
2380.. cfunction:: PyObject* PyFile_GetLine(PyObject *p, int n)
2381
2382 .. index:: single: EOFError (built-in exception)
2383
2384 Equivalent to ``p.readline([n])``, this function reads one line from the
2385 object *p*. *p* may be a file object or any object with a :meth:`readline`
2386 method. If *n* is ``0``, exactly one line is read, regardless of the length of
2387 the line. If *n* is greater than ``0``, no more than *n* bytes will be read
2388 from the file; a partial line can be returned. In both cases, an empty string
2389 is returned if the end of the file is reached immediately. If *n* is less than
2390 ``0``, however, one line is read regardless of length, but :exc:`EOFError` is
2391 raised if the end of the file is reached immediately.
2392
2393
2394.. cfunction:: PyObject* PyFile_Name(PyObject *p)
2395
2396 Return the name of the file specified by *p* as a string object.
2397
2398
2399.. cfunction:: void PyFile_SetBufSize(PyFileObject *p, int n)
2400
2401 .. index:: single: setvbuf()
2402
2403 Available on systems with :cfunc:`setvbuf` only. This should only be called
2404 immediately after file object creation.
2405
2406
Thomas Wouters1b7f8912007-09-19 03:06:30 +00002407.. cfunction:: int PyFile_SetEncoding(PyFileObject *p, const char *enc)
Georg Brandl116aa622007-08-15 14:28:22 +00002408
2409 Set the file's encoding for Unicode output to *enc*. Return 1 on success and 0
2410 on failure.
2411
Georg Brandl116aa622007-08-15 14:28:22 +00002412
2413.. cfunction:: int PyFile_SoftSpace(PyObject *p, int newflag)
2414
2415 .. index:: single: softspace (file attribute)
2416
2417 This function exists for internal use by the interpreter. Set the
2418 :attr:`softspace` attribute of *p* to *newflag* and return the previous value.
2419 *p* does not have to be a file object for this function to work properly; any
2420 object is supported (thought its only interesting if the :attr:`softspace`
2421 attribute can be set). This function clears any errors, and will return ``0``
2422 as the previous value if the attribute either does not exist or if there were
2423 errors in retrieving it. There is no way to detect errors from this function,
2424 but doing so should not be needed.
2425
2426
2427.. cfunction:: int PyFile_WriteObject(PyObject *obj, PyObject *p, int flags)
2428
2429 .. index:: single: Py_PRINT_RAW
2430
2431 Write object *obj* to file object *p*. The only supported flag for *flags* is
2432 :const:`Py_PRINT_RAW`; if given, the :func:`str` of the object is written
2433 instead of the :func:`repr`. Return ``0`` on success or ``-1`` on failure; the
2434 appropriate exception will be set.
2435
2436
2437.. cfunction:: int PyFile_WriteString(const char *s, PyObject *p)
2438
2439 Write string *s* to file object *p*. Return ``0`` on success or ``-1`` on
2440 failure; the appropriate exception will be set.
2441
2442
Georg Brandl116aa622007-08-15 14:28:22 +00002443.. _function-objects:
2444
2445Function Objects
2446----------------
2447
2448.. index:: object: function
2449
2450There are a few functions specific to Python functions.
2451
2452
2453.. ctype:: PyFunctionObject
2454
2455 The C structure used for functions.
2456
2457
2458.. cvar:: PyTypeObject PyFunction_Type
2459
2460 .. index:: single: MethodType (in module types)
2461
2462 This is an instance of :ctype:`PyTypeObject` and represents the Python function
2463 type. It is exposed to Python programmers as ``types.FunctionType``.
2464
2465
2466.. cfunction:: int PyFunction_Check(PyObject *o)
2467
2468 Return true if *o* is a function object (has type :cdata:`PyFunction_Type`).
2469 The parameter must not be *NULL*.
2470
2471
2472.. cfunction:: PyObject* PyFunction_New(PyObject *code, PyObject *globals)
2473
2474 Return a new function object associated with the code object *code*. *globals*
2475 must be a dictionary with the global variables accessible to the function.
2476
2477 The function's docstring, name and *__module__* are retrieved from the code
2478 object, the argument defaults and closure are set to *NULL*.
2479
2480
2481.. cfunction:: PyObject* PyFunction_GetCode(PyObject *op)
2482
2483 Return the code object associated with the function object *op*.
2484
2485
2486.. cfunction:: PyObject* PyFunction_GetGlobals(PyObject *op)
2487
2488 Return the globals dictionary associated with the function object *op*.
2489
2490
2491.. cfunction:: PyObject* PyFunction_GetModule(PyObject *op)
2492
2493 Return the *__module__* attribute of the function object *op*. This is normally
2494 a string containing the module name, but can be set to any other object by
2495 Python code.
2496
2497
2498.. cfunction:: PyObject* PyFunction_GetDefaults(PyObject *op)
2499
2500 Return the argument default values of the function object *op*. This can be a
2501 tuple of arguments or *NULL*.
2502
2503
2504.. cfunction:: int PyFunction_SetDefaults(PyObject *op, PyObject *defaults)
2505
2506 Set the argument default values for the function object *op*. *defaults* must be
2507 *Py_None* or a tuple.
2508
2509 Raises :exc:`SystemError` and returns ``-1`` on failure.
2510
2511
2512.. cfunction:: PyObject* PyFunction_GetClosure(PyObject *op)
2513
2514 Return the closure associated with the function object *op*. This can be *NULL*
2515 or a tuple of cell objects.
2516
2517
2518.. cfunction:: int PyFunction_SetClosure(PyObject *op, PyObject *closure)
2519
2520 Set the closure associated with the function object *op*. *closure* must be
2521 *Py_None* or a tuple of cell objects.
2522
2523 Raises :exc:`SystemError` and returns ``-1`` on failure.
2524
2525
Christian Heimesa3534a62007-12-11 19:56:40 +00002526.. _instancemethod-objects:
2527
2528Instance Method Objects
2529-----------------------
2530
2531.. index:: object: instancemethod
2532
2533An instance method is a wrapper for a :cdata:`PyCFunction` and the new way
2534to bind a :cdata:`PyCFunction` to a class object. It replaces the former call
Georg Brandl69aabc02007-12-21 08:15:02 +00002535``PyMethod_New(func, NULL, class)``.
Christian Heimesa3534a62007-12-11 19:56:40 +00002536
2537
2538.. cvar:: PyTypeObject PyInstanceMethod_Type
2539
2540 This instance of :ctype:`PyTypeObject` represents the Python instance
2541 method type. It is not exposed to Python programs.
2542
2543
2544.. cfunction:: int PyInstanceMethod_Check(PyObject *o)
2545
2546 Return true if *o* is an instance method object (has type
2547 :cdata:`PyInstanceMethod_Type`). The parameter must not be *NULL*.
2548
2549
2550.. cfunction:: PyObject* PyInstanceMethod_New(PyObject *func)
2551
2552 Return a new instance method object, with *func* being any callable object
2553 *func* is is the function that will be called when the instance method is
2554 called.
2555
2556
2557.. cfunction:: PyObject* PyInstanceMethod_Function(PyObject *im)
2558
2559 Return the function object associated with the instance method *im*.
2560
2561
2562.. cfunction:: PyObject* PyInstanceMethod_GET_FUNCTION(PyObject *im)
2563
2564 Macro version of :cfunc:`PyInstanceMethod_Function` which avoids error checking.
2565
2566
Georg Brandl116aa622007-08-15 14:28:22 +00002567.. _method-objects:
2568
2569Method Objects
2570--------------
2571
2572.. index:: object: method
2573
Christian Heimes05a2fc22007-11-30 22:29:24 +00002574Methods are bound function objects. Methods are always bound to an instance of
2575an user-defined class. Unbound methods (methods bound to a class object) are
2576no longer available.
Georg Brandl116aa622007-08-15 14:28:22 +00002577
2578
2579.. cvar:: PyTypeObject PyMethod_Type
2580
2581 .. index:: single: MethodType (in module types)
2582
2583 This instance of :ctype:`PyTypeObject` represents the Python method type. This
2584 is exposed to Python programs as ``types.MethodType``.
2585
2586
2587.. cfunction:: int PyMethod_Check(PyObject *o)
2588
2589 Return true if *o* is a method object (has type :cdata:`PyMethod_Type`). The
2590 parameter must not be *NULL*.
2591
2592
Christian Heimes05a2fc22007-11-30 22:29:24 +00002593.. cfunction:: PyObject* PyMethod_New(PyObject *func, PyObject *self)
Georg Brandl116aa622007-08-15 14:28:22 +00002594
Christian Heimes05a2fc22007-11-30 22:29:24 +00002595 Return a new method object, with *func* being any callable object and *self*
2596 the instance the method should be bound. *func* is is the function that will
2597 be called when the method is called. *self* must not be *NULL*.
Georg Brandl116aa622007-08-15 14:28:22 +00002598
2599
2600.. cfunction:: PyObject* PyMethod_Function(PyObject *meth)
2601
2602 Return the function object associated with the method *meth*.
2603
2604
2605.. cfunction:: PyObject* PyMethod_GET_FUNCTION(PyObject *meth)
2606
2607 Macro version of :cfunc:`PyMethod_Function` which avoids error checking.
2608
2609
2610.. cfunction:: PyObject* PyMethod_Self(PyObject *meth)
2611
Christian Heimes05a2fc22007-11-30 22:29:24 +00002612 Return the instance associated with the method *meth*.
Georg Brandl116aa622007-08-15 14:28:22 +00002613
2614
2615.. cfunction:: PyObject* PyMethod_GET_SELF(PyObject *meth)
2616
2617 Macro version of :cfunc:`PyMethod_Self` which avoids error checking.
2618
2619
2620.. _moduleobjects:
2621
2622Module Objects
2623--------------
2624
2625.. index:: object: module
2626
2627There are only a few functions special to module objects.
2628
2629
2630.. cvar:: PyTypeObject PyModule_Type
2631
2632 .. index:: single: ModuleType (in module types)
2633
2634 This instance of :ctype:`PyTypeObject` represents the Python module type. This
2635 is exposed to Python programs as ``types.ModuleType``.
2636
2637
2638.. cfunction:: int PyModule_Check(PyObject *p)
2639
2640 Return true if *p* is a module object, or a subtype of a module object.
2641
Georg Brandl116aa622007-08-15 14:28:22 +00002642
2643.. cfunction:: int PyModule_CheckExact(PyObject *p)
2644
2645 Return true if *p* is a module object, but not a subtype of
2646 :cdata:`PyModule_Type`.
2647
Georg Brandl116aa622007-08-15 14:28:22 +00002648
2649.. cfunction:: PyObject* PyModule_New(const char *name)
2650
2651 .. index::
2652 single: __name__ (module attribute)
2653 single: __doc__ (module attribute)
2654 single: __file__ (module attribute)
2655
2656 Return a new module object with the :attr:`__name__` attribute set to *name*.
2657 Only the module's :attr:`__doc__` and :attr:`__name__` attributes are filled in;
2658 the caller is responsible for providing a :attr:`__file__` attribute.
2659
2660
2661.. cfunction:: PyObject* PyModule_GetDict(PyObject *module)
2662
2663 .. index:: single: __dict__ (module attribute)
2664
2665 Return the dictionary object that implements *module*'s namespace; this object
2666 is the same as the :attr:`__dict__` attribute of the module object. This
2667 function never fails. It is recommended extensions use other
2668 :cfunc:`PyModule_\*` and :cfunc:`PyObject_\*` functions rather than directly
2669 manipulate a module's :attr:`__dict__`.
2670
2671
2672.. cfunction:: char* PyModule_GetName(PyObject *module)
2673
2674 .. index::
2675 single: __name__ (module attribute)
2676 single: SystemError (built-in exception)
2677
2678 Return *module*'s :attr:`__name__` value. If the module does not provide one,
2679 or if it is not a string, :exc:`SystemError` is raised and *NULL* is returned.
2680
2681
2682.. cfunction:: char* PyModule_GetFilename(PyObject *module)
2683
2684 .. index::
2685 single: __file__ (module attribute)
2686 single: SystemError (built-in exception)
2687
2688 Return the name of the file from which *module* was loaded using *module*'s
2689 :attr:`__file__` attribute. If this is not defined, or if it is not a string,
2690 raise :exc:`SystemError` and return *NULL*.
2691
2692
2693.. cfunction:: int PyModule_AddObject(PyObject *module, const char *name, PyObject *value)
2694
2695 Add an object to *module* as *name*. This is a convenience function which can
2696 be used from the module's initialization function. This steals a reference to
2697 *value*. Return ``-1`` on error, ``0`` on success.
2698
Georg Brandl116aa622007-08-15 14:28:22 +00002699
2700.. cfunction:: int PyModule_AddIntConstant(PyObject *module, const char *name, long value)
2701
2702 Add an integer constant to *module* as *name*. This convenience function can be
2703 used from the module's initialization function. Return ``-1`` on error, ``0`` on
2704 success.
2705
Georg Brandl116aa622007-08-15 14:28:22 +00002706
2707.. cfunction:: int PyModule_AddStringConstant(PyObject *module, const char *name, const char *value)
2708
2709 Add a string constant to *module* as *name*. This convenience function can be
2710 used from the module's initialization function. The string *value* must be
2711 null-terminated. Return ``-1`` on error, ``0`` on success.
2712
Georg Brandl116aa622007-08-15 14:28:22 +00002713
2714.. _iterator-objects:
2715
2716Iterator Objects
2717----------------
2718
2719Python provides two general-purpose iterator objects. The first, a sequence
2720iterator, works with an arbitrary sequence supporting the :meth:`__getitem__`
2721method. The second works with a callable object and a sentinel value, calling
2722the callable for each item in the sequence, and ending the iteration when the
2723sentinel value is returned.
2724
2725
2726.. cvar:: PyTypeObject PySeqIter_Type
2727
2728 Type object for iterator objects returned by :cfunc:`PySeqIter_New` and the
2729 one-argument form of the :func:`iter` built-in function for built-in sequence
2730 types.
2731
Georg Brandl116aa622007-08-15 14:28:22 +00002732
2733.. cfunction:: int PySeqIter_Check(op)
2734
2735 Return true if the type of *op* is :cdata:`PySeqIter_Type`.
2736
Georg Brandl116aa622007-08-15 14:28:22 +00002737
2738.. cfunction:: PyObject* PySeqIter_New(PyObject *seq)
2739
2740 Return an iterator that works with a general sequence object, *seq*. The
2741 iteration ends when the sequence raises :exc:`IndexError` for the subscripting
2742 operation.
2743
Georg Brandl116aa622007-08-15 14:28:22 +00002744
2745.. cvar:: PyTypeObject PyCallIter_Type
2746
2747 Type object for iterator objects returned by :cfunc:`PyCallIter_New` and the
2748 two-argument form of the :func:`iter` built-in function.
2749
Georg Brandl116aa622007-08-15 14:28:22 +00002750
2751.. cfunction:: int PyCallIter_Check(op)
2752
2753 Return true if the type of *op* is :cdata:`PyCallIter_Type`.
2754
Georg Brandl116aa622007-08-15 14:28:22 +00002755
2756.. cfunction:: PyObject* PyCallIter_New(PyObject *callable, PyObject *sentinel)
2757
2758 Return a new iterator. The first parameter, *callable*, can be any Python
2759 callable object that can be called with no parameters; each call to it should
2760 return the next item in the iteration. When *callable* returns a value equal to
2761 *sentinel*, the iteration will be terminated.
2762
Georg Brandl116aa622007-08-15 14:28:22 +00002763
2764.. _descriptor-objects:
2765
2766Descriptor Objects
2767------------------
2768
2769"Descriptors" are objects that describe some attribute of an object. They are
2770found in the dictionary of type objects.
2771
Georg Brandl321976b2007-09-01 12:33:24 +00002772.. XXX document these!
Georg Brandl116aa622007-08-15 14:28:22 +00002773
2774.. cvar:: PyTypeObject PyProperty_Type
2775
2776 The type object for the built-in descriptor types.
2777
Georg Brandl116aa622007-08-15 14:28:22 +00002778
2779.. cfunction:: PyObject* PyDescr_NewGetSet(PyTypeObject *type, struct PyGetSetDef *getset)
2780
Georg Brandl116aa622007-08-15 14:28:22 +00002781
2782.. cfunction:: PyObject* PyDescr_NewMember(PyTypeObject *type, struct PyMemberDef *meth)
2783
Georg Brandl116aa622007-08-15 14:28:22 +00002784
2785.. cfunction:: PyObject* PyDescr_NewMethod(PyTypeObject *type, struct PyMethodDef *meth)
2786
Georg Brandl116aa622007-08-15 14:28:22 +00002787
2788.. cfunction:: PyObject* PyDescr_NewWrapper(PyTypeObject *type, struct wrapperbase *wrapper, void *wrapped)
2789
Georg Brandl116aa622007-08-15 14:28:22 +00002790
2791.. cfunction:: PyObject* PyDescr_NewClassMethod(PyTypeObject *type, PyMethodDef *method)
2792
Georg Brandl116aa622007-08-15 14:28:22 +00002793
2794.. cfunction:: int PyDescr_IsData(PyObject *descr)
2795
2796 Return true if the descriptor objects *descr* describes a data attribute, or
2797 false if it describes a method. *descr* must be a descriptor object; there is
2798 no error checking.
2799
Georg Brandl116aa622007-08-15 14:28:22 +00002800
2801.. cfunction:: PyObject* PyWrapper_New(PyObject *, PyObject *)
2802
Georg Brandl116aa622007-08-15 14:28:22 +00002803
2804.. _slice-objects:
2805
2806Slice Objects
2807-------------
2808
2809
2810.. cvar:: PyTypeObject PySlice_Type
2811
2812 .. index:: single: SliceType (in module types)
2813
2814 The type object for slice objects. This is the same as ``slice`` and
2815 ``types.SliceType``.
2816
2817
2818.. cfunction:: int PySlice_Check(PyObject *ob)
2819
2820 Return true if *ob* is a slice object; *ob* must not be *NULL*.
2821
2822
2823.. cfunction:: PyObject* PySlice_New(PyObject *start, PyObject *stop, PyObject *step)
2824
2825 Return a new slice object with the given values. The *start*, *stop*, and
2826 *step* parameters are used as the values of the slice object attributes of the
2827 same names. Any of the values may be *NULL*, in which case the ``None`` will be
2828 used for the corresponding attribute. Return *NULL* if the new object could not
2829 be allocated.
2830
2831
2832.. cfunction:: int PySlice_GetIndices(PySliceObject *slice, Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)
2833
2834 Retrieve the start, stop and step indices from the slice object *slice*,
2835 assuming a sequence of length *length*. Treats indices greater than *length* as
2836 errors.
2837
2838 Returns 0 on success and -1 on error with no exception set (unless one of the
2839 indices was not :const:`None` and failed to be converted to an integer, in which
2840 case -1 is returned with an exception set).
2841
2842 You probably do not want to use this function. If you want to use slice objects
2843 in versions of Python prior to 2.3, you would probably do well to incorporate
2844 the source of :cfunc:`PySlice_GetIndicesEx`, suitably renamed, in the source of
2845 your extension.
2846
2847
2848.. cfunction:: int PySlice_GetIndicesEx(PySliceObject *slice, Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step, Py_ssize_t *slicelength)
2849
2850 Usable replacement for :cfunc:`PySlice_GetIndices`. Retrieve the start, stop,
2851 and step indices from the slice object *slice* assuming a sequence of length
2852 *length*, and store the length of the slice in *slicelength*. Out of bounds
2853 indices are clipped in a manner consistent with the handling of normal slices.
2854
2855 Returns 0 on success and -1 on error with exception set.
2856
Georg Brandl116aa622007-08-15 14:28:22 +00002857
2858.. _weakrefobjects:
2859
2860Weak Reference Objects
2861----------------------
2862
2863Python supports *weak references* as first-class objects. There are two
2864specific object types which directly implement weak references. The first is a
2865simple reference object, and the second acts as a proxy for the original object
2866as much as it can.
2867
2868
2869.. cfunction:: int PyWeakref_Check(ob)
2870
2871 Return true if *ob* is either a reference or proxy object.
2872
Georg Brandl116aa622007-08-15 14:28:22 +00002873
2874.. cfunction:: int PyWeakref_CheckRef(ob)
2875
2876 Return true if *ob* is a reference object.
2877
Georg Brandl116aa622007-08-15 14:28:22 +00002878
2879.. cfunction:: int PyWeakref_CheckProxy(ob)
2880
2881 Return true if *ob* is a proxy object.
2882
Georg Brandl116aa622007-08-15 14:28:22 +00002883
2884.. cfunction:: PyObject* PyWeakref_NewRef(PyObject *ob, PyObject *callback)
2885
2886 Return a weak reference object for the object *ob*. This will always return
2887 a new reference, but is not guaranteed to create a new object; an existing
2888 reference object may be returned. The second parameter, *callback*, can be a
2889 callable object that receives notification when *ob* is garbage collected; it
2890 should accept a single parameter, which will be the weak reference object
2891 itself. *callback* may also be ``None`` or *NULL*. If *ob* is not a
2892 weakly-referencable object, or if *callback* is not callable, ``None``, or
2893 *NULL*, this will return *NULL* and raise :exc:`TypeError`.
2894
Georg Brandl116aa622007-08-15 14:28:22 +00002895
2896.. cfunction:: PyObject* PyWeakref_NewProxy(PyObject *ob, PyObject *callback)
2897
2898 Return a weak reference proxy object for the object *ob*. This will always
2899 return a new reference, but is not guaranteed to create a new object; an
2900 existing proxy object may be returned. The second parameter, *callback*, can
2901 be a callable object that receives notification when *ob* is garbage
2902 collected; it should accept a single parameter, which will be the weak
2903 reference object itself. *callback* may also be ``None`` or *NULL*. If *ob*
2904 is not a weakly-referencable object, or if *callback* is not callable,
2905 ``None``, or *NULL*, this will return *NULL* and raise :exc:`TypeError`.
2906
Georg Brandl116aa622007-08-15 14:28:22 +00002907
2908.. cfunction:: PyObject* PyWeakref_GetObject(PyObject *ref)
2909
2910 Return the referenced object from a weak reference, *ref*. If the referent is
2911 no longer live, returns ``None``.
2912
Georg Brandl116aa622007-08-15 14:28:22 +00002913
2914.. cfunction:: PyObject* PyWeakref_GET_OBJECT(PyObject *ref)
2915
2916 Similar to :cfunc:`PyWeakref_GetObject`, but implemented as a macro that does no
2917 error checking.
2918
Georg Brandl116aa622007-08-15 14:28:22 +00002919
2920.. _cobjects:
2921
2922CObjects
2923--------
2924
2925.. index:: object: CObject
2926
2927Refer to *Extending and Embedding the Python Interpreter*, section 1.12,
2928"Providing a C API for an Extension Module," for more information on using these
2929objects.
2930
2931
2932.. ctype:: PyCObject
2933
2934 This subtype of :ctype:`PyObject` represents an opaque value, useful for C
2935 extension modules who need to pass an opaque value (as a :ctype:`void\*`
2936 pointer) through Python code to other C code. It is often used to make a C
2937 function pointer defined in one module available to other modules, so the
2938 regular import mechanism can be used to access C APIs defined in dynamically
2939 loaded modules.
2940
2941
2942.. cfunction:: int PyCObject_Check(PyObject *p)
2943
2944 Return true if its argument is a :ctype:`PyCObject`.
2945
2946
2947.. cfunction:: PyObject* PyCObject_FromVoidPtr(void* cobj, void (*destr)(void *))
2948
2949 Create a :ctype:`PyCObject` from the ``void *`` *cobj*. The *destr* function
2950 will be called when the object is reclaimed, unless it is *NULL*.
2951
2952
2953.. cfunction:: PyObject* PyCObject_FromVoidPtrAndDesc(void* cobj, void* desc, void (*destr)(void *, void *))
2954
2955 Create a :ctype:`PyCObject` from the :ctype:`void \*` *cobj*. The *destr*
2956 function will be called when the object is reclaimed. The *desc* argument can
2957 be used to pass extra callback data for the destructor function.
2958
2959
2960.. cfunction:: void* PyCObject_AsVoidPtr(PyObject* self)
2961
2962 Return the object :ctype:`void \*` that the :ctype:`PyCObject` *self* was
2963 created with.
2964
2965
2966.. cfunction:: void* PyCObject_GetDesc(PyObject* self)
2967
2968 Return the description :ctype:`void \*` that the :ctype:`PyCObject` *self* was
2969 created with.
2970
2971
2972.. cfunction:: int PyCObject_SetVoidPtr(PyObject* self, void* cobj)
2973
2974 Set the void pointer inside *self* to *cobj*. The :ctype:`PyCObject` must not
2975 have an associated destructor. Return true on success, false on failure.
2976
2977
2978.. _cell-objects:
2979
2980Cell Objects
2981------------
2982
2983"Cell" objects are used to implement variables referenced by multiple scopes.
2984For each such variable, a cell object is created to store the value; the local
2985variables of each stack frame that references the value contains a reference to
2986the cells from outer scopes which also use that variable. When the value is
2987accessed, the value contained in the cell is used instead of the cell object
2988itself. This de-referencing of the cell object requires support from the
2989generated byte-code; these are not automatically de-referenced when accessed.
2990Cell objects are not likely to be useful elsewhere.
2991
2992
2993.. ctype:: PyCellObject
2994
2995 The C structure used for cell objects.
2996
2997
2998.. cvar:: PyTypeObject PyCell_Type
2999
3000 The type object corresponding to cell objects.
3001
3002
3003.. cfunction:: int PyCell_Check(ob)
3004
3005 Return true if *ob* is a cell object; *ob* must not be *NULL*.
3006
3007
3008.. cfunction:: PyObject* PyCell_New(PyObject *ob)
3009
3010 Create and return a new cell object containing the value *ob*. The parameter may
3011 be *NULL*.
3012
3013
3014.. cfunction:: PyObject* PyCell_Get(PyObject *cell)
3015
3016 Return the contents of the cell *cell*.
3017
3018
3019.. cfunction:: PyObject* PyCell_GET(PyObject *cell)
3020
3021 Return the contents of the cell *cell*, but without checking that *cell* is
3022 non-*NULL* and a cell object.
3023
3024
3025.. cfunction:: int PyCell_Set(PyObject *cell, PyObject *value)
3026
3027 Set the contents of the cell object *cell* to *value*. This releases the
3028 reference to any current content of the cell. *value* may be *NULL*. *cell*
3029 must be non-*NULL*; if it is not a cell object, ``-1`` will be returned. On
3030 success, ``0`` will be returned.
3031
3032
3033.. cfunction:: void PyCell_SET(PyObject *cell, PyObject *value)
3034
3035 Sets the value of the cell object *cell* to *value*. No reference counts are
3036 adjusted, and no checks are made for safety; *cell* must be non-*NULL* and must
3037 be a cell object.
3038
3039
3040.. _gen-objects:
3041
3042Generator Objects
3043-----------------
3044
3045Generator objects are what Python uses to implement generator iterators. They
3046are normally created by iterating over a function that yields values, rather
3047than explicitly calling :cfunc:`PyGen_New`.
3048
3049
3050.. ctype:: PyGenObject
3051
3052 The C structure used for generator objects.
3053
3054
3055.. cvar:: PyTypeObject PyGen_Type
3056
3057 The type object corresponding to generator objects
3058
3059
3060.. cfunction:: int PyGen_Check(ob)
3061
3062 Return true if *ob* is a generator object; *ob* must not be *NULL*.
3063
3064
3065.. cfunction:: int PyGen_CheckExact(ob)
3066
3067 Return true if *ob*'s type is *PyGen_Type* is a generator object; *ob* must not
3068 be *NULL*.
3069
3070
3071.. cfunction:: PyObject* PyGen_New(PyFrameObject *frame)
3072
3073 Create and return a new generator object based on the *frame* object. A
3074 reference to *frame* is stolen by this function. The parameter must not be
3075 *NULL*.
3076
3077
3078.. _datetimeobjects:
3079
3080DateTime Objects
3081----------------
3082
3083Various date and time objects are supplied by the :mod:`datetime` module.
3084Before using any of these functions, the header file :file:`datetime.h` must be
3085included in your source (note that this is not included by :file:`Python.h`),
3086and the macro :cfunc:`PyDateTime_IMPORT` must be invoked. The macro puts a
3087pointer to a C structure into a static variable, ``PyDateTimeAPI``, that is
3088used by the following macros.
3089
3090Type-check macros:
3091
Georg Brandl116aa622007-08-15 14:28:22 +00003092.. cfunction:: int PyDate_Check(PyObject *ob)
3093
3094 Return true if *ob* is of type :cdata:`PyDateTime_DateType` or a subtype of
3095 :cdata:`PyDateTime_DateType`. *ob* must not be *NULL*.
3096
Georg Brandl116aa622007-08-15 14:28:22 +00003097
3098.. cfunction:: int PyDate_CheckExact(PyObject *ob)
3099
3100 Return true if *ob* is of type :cdata:`PyDateTime_DateType`. *ob* must not be
3101 *NULL*.
3102
Georg Brandl116aa622007-08-15 14:28:22 +00003103
3104.. cfunction:: int PyDateTime_Check(PyObject *ob)
3105
3106 Return true if *ob* is of type :cdata:`PyDateTime_DateTimeType` or a subtype of
3107 :cdata:`PyDateTime_DateTimeType`. *ob* must not be *NULL*.
3108
Georg Brandl116aa622007-08-15 14:28:22 +00003109
3110.. cfunction:: int PyDateTime_CheckExact(PyObject *ob)
3111
3112 Return true if *ob* is of type :cdata:`PyDateTime_DateTimeType`. *ob* must not
3113 be *NULL*.
3114
Georg Brandl116aa622007-08-15 14:28:22 +00003115
3116.. cfunction:: int PyTime_Check(PyObject *ob)
3117
3118 Return true if *ob* is of type :cdata:`PyDateTime_TimeType` or a subtype of
3119 :cdata:`PyDateTime_TimeType`. *ob* must not be *NULL*.
3120
Georg Brandl116aa622007-08-15 14:28:22 +00003121
3122.. cfunction:: int PyTime_CheckExact(PyObject *ob)
3123
3124 Return true if *ob* is of type :cdata:`PyDateTime_TimeType`. *ob* must not be
3125 *NULL*.
3126
Georg Brandl116aa622007-08-15 14:28:22 +00003127
3128.. cfunction:: int PyDelta_Check(PyObject *ob)
3129
3130 Return true if *ob* is of type :cdata:`PyDateTime_DeltaType` or a subtype of
3131 :cdata:`PyDateTime_DeltaType`. *ob* must not be *NULL*.
3132
Georg Brandl116aa622007-08-15 14:28:22 +00003133
3134.. cfunction:: int PyDelta_CheckExact(PyObject *ob)
3135
3136 Return true if *ob* is of type :cdata:`PyDateTime_DeltaType`. *ob* must not be
3137 *NULL*.
3138
Georg Brandl116aa622007-08-15 14:28:22 +00003139
3140.. cfunction:: int PyTZInfo_Check(PyObject *ob)
3141
3142 Return true if *ob* is of type :cdata:`PyDateTime_TZInfoType` or a subtype of
3143 :cdata:`PyDateTime_TZInfoType`. *ob* must not be *NULL*.
3144
Georg Brandl116aa622007-08-15 14:28:22 +00003145
3146.. cfunction:: int PyTZInfo_CheckExact(PyObject *ob)
3147
3148 Return true if *ob* is of type :cdata:`PyDateTime_TZInfoType`. *ob* must not be
3149 *NULL*.
3150
Georg Brandl116aa622007-08-15 14:28:22 +00003151
3152Macros to create objects:
3153
Georg Brandl116aa622007-08-15 14:28:22 +00003154.. cfunction:: PyObject* PyDate_FromDate(int year, int month, int day)
3155
3156 Return a ``datetime.date`` object with the specified year, month and day.
3157
Georg Brandl116aa622007-08-15 14:28:22 +00003158
3159.. cfunction:: PyObject* PyDateTime_FromDateAndTime(int year, int month, int day, int hour, int minute, int second, int usecond)
3160
3161 Return a ``datetime.datetime`` object with the specified year, month, day, hour,
3162 minute, second and microsecond.
3163
Georg Brandl116aa622007-08-15 14:28:22 +00003164
3165.. cfunction:: PyObject* PyTime_FromTime(int hour, int minute, int second, int usecond)
3166
3167 Return a ``datetime.time`` object with the specified hour, minute, second and
3168 microsecond.
3169
Georg Brandl116aa622007-08-15 14:28:22 +00003170
3171.. cfunction:: PyObject* PyDelta_FromDSU(int days, int seconds, int useconds)
3172
3173 Return a ``datetime.timedelta`` object representing the given number of days,
3174 seconds and microseconds. Normalization is performed so that the resulting
3175 number of microseconds and seconds lie in the ranges documented for
3176 ``datetime.timedelta`` objects.
3177
Georg Brandl116aa622007-08-15 14:28:22 +00003178
3179Macros to extract fields from date objects. The argument must be an instance of
3180:cdata:`PyDateTime_Date`, including subclasses (such as
3181:cdata:`PyDateTime_DateTime`). The argument must not be *NULL*, and the type is
3182not checked:
3183
Georg Brandl116aa622007-08-15 14:28:22 +00003184.. cfunction:: int PyDateTime_GET_YEAR(PyDateTime_Date *o)
3185
3186 Return the year, as a positive int.
3187
Georg Brandl116aa622007-08-15 14:28:22 +00003188
3189.. cfunction:: int PyDateTime_GET_MONTH(PyDateTime_Date *o)
3190
3191 Return the month, as an int from 1 through 12.
3192
Georg Brandl116aa622007-08-15 14:28:22 +00003193
3194.. cfunction:: int PyDateTime_GET_DAY(PyDateTime_Date *o)
3195
3196 Return the day, as an int from 1 through 31.
3197
Georg Brandl116aa622007-08-15 14:28:22 +00003198
3199Macros to extract fields from datetime objects. The argument must be an
3200instance of :cdata:`PyDateTime_DateTime`, including subclasses. The argument
3201must not be *NULL*, and the type is not checked:
3202
Georg Brandl116aa622007-08-15 14:28:22 +00003203.. cfunction:: int PyDateTime_DATE_GET_HOUR(PyDateTime_DateTime *o)
3204
3205 Return the hour, as an int from 0 through 23.
3206
Georg Brandl116aa622007-08-15 14:28:22 +00003207
3208.. cfunction:: int PyDateTime_DATE_GET_MINUTE(PyDateTime_DateTime *o)
3209
3210 Return the minute, as an int from 0 through 59.
3211
Georg Brandl116aa622007-08-15 14:28:22 +00003212
3213.. cfunction:: int PyDateTime_DATE_GET_SECOND(PyDateTime_DateTime *o)
3214
3215 Return the second, as an int from 0 through 59.
3216
Georg Brandl116aa622007-08-15 14:28:22 +00003217
3218.. cfunction:: int PyDateTime_DATE_GET_MICROSECOND(PyDateTime_DateTime *o)
3219
3220 Return the microsecond, as an int from 0 through 999999.
3221
Georg Brandl116aa622007-08-15 14:28:22 +00003222
3223Macros to extract fields from time objects. The argument must be an instance of
3224:cdata:`PyDateTime_Time`, including subclasses. The argument must not be *NULL*,
3225and the type is not checked:
3226
Georg Brandl116aa622007-08-15 14:28:22 +00003227.. cfunction:: int PyDateTime_TIME_GET_HOUR(PyDateTime_Time *o)
3228
3229 Return the hour, as an int from 0 through 23.
3230
Georg Brandl116aa622007-08-15 14:28:22 +00003231
3232.. cfunction:: int PyDateTime_TIME_GET_MINUTE(PyDateTime_Time *o)
3233
3234 Return the minute, as an int from 0 through 59.
3235
Georg Brandl116aa622007-08-15 14:28:22 +00003236
3237.. cfunction:: int PyDateTime_TIME_GET_SECOND(PyDateTime_Time *o)
3238
3239 Return the second, as an int from 0 through 59.
3240
Georg Brandl116aa622007-08-15 14:28:22 +00003241
3242.. cfunction:: int PyDateTime_TIME_GET_MICROSECOND(PyDateTime_Time *o)
3243
3244 Return the microsecond, as an int from 0 through 999999.
3245
Georg Brandl116aa622007-08-15 14:28:22 +00003246
3247Macros for the convenience of modules implementing the DB API:
3248
Georg Brandl116aa622007-08-15 14:28:22 +00003249.. cfunction:: PyObject* PyDateTime_FromTimestamp(PyObject *args)
3250
3251 Create and return a new ``datetime.datetime`` object given an argument tuple
3252 suitable for passing to ``datetime.datetime.fromtimestamp()``.
3253
Georg Brandl116aa622007-08-15 14:28:22 +00003254
3255.. cfunction:: PyObject* PyDate_FromTimestamp(PyObject *args)
3256
3257 Create and return a new ``datetime.date`` object given an argument tuple
3258 suitable for passing to ``datetime.date.fromtimestamp()``.
3259
Georg Brandl116aa622007-08-15 14:28:22 +00003260
3261.. _setobjects:
3262
3263Set Objects
3264-----------
3265
3266.. sectionauthor:: Raymond D. Hettinger <python@rcn.com>
3267
3268
3269.. index::
3270 object: set
3271 object: frozenset
3272
Georg Brandl116aa622007-08-15 14:28:22 +00003273This section details the public API for :class:`set` and :class:`frozenset`
3274objects. Any functionality not listed below is best accessed using the either
3275the abstract object protocol (including :cfunc:`PyObject_CallMethod`,
3276:cfunc:`PyObject_RichCompareBool`, :cfunc:`PyObject_Hash`,
3277:cfunc:`PyObject_Repr`, :cfunc:`PyObject_IsTrue`, :cfunc:`PyObject_Print`, and
3278:cfunc:`PyObject_GetIter`) or the abstract number protocol (including
3279:cfunc:`PyNumber_And`, :cfunc:`PyNumber_Subtract`, :cfunc:`PyNumber_Or`,
3280:cfunc:`PyNumber_Xor`, :cfunc:`PyNumber_InPlaceAnd`,
3281:cfunc:`PyNumber_InPlaceSubtract`, :cfunc:`PyNumber_InPlaceOr`, and
3282:cfunc:`PyNumber_InPlaceXor`).
3283
3284
3285.. ctype:: PySetObject
3286
3287 This subtype of :ctype:`PyObject` is used to hold the internal data for both
3288 :class:`set` and :class:`frozenset` objects. It is like a :ctype:`PyDictObject`
3289 in that it is a fixed size for small sets (much like tuple storage) and will
3290 point to a separate, variable sized block of memory for medium and large sized
3291 sets (much like list storage). None of the fields of this structure should be
3292 considered public and are subject to change. All access should be done through
3293 the documented API rather than by manipulating the values in the structure.
3294
3295
3296.. cvar:: PyTypeObject PySet_Type
3297
3298 This is an instance of :ctype:`PyTypeObject` representing the Python
3299 :class:`set` type.
3300
3301
3302.. cvar:: PyTypeObject PyFrozenSet_Type
3303
3304 This is an instance of :ctype:`PyTypeObject` representing the Python
3305 :class:`frozenset` type.
3306
3307The following type check macros work on pointers to any Python object. Likewise,
3308the constructor functions work with any iterable Python object.
3309
3310
3311.. cfunction:: int PyAnySet_Check(PyObject *p)
3312
3313 Return true if *p* is a :class:`set` object, a :class:`frozenset` object, or an
3314 instance of a subtype.
3315
3316
3317.. cfunction:: int PyAnySet_CheckExact(PyObject *p)
3318
3319 Return true if *p* is a :class:`set` object or a :class:`frozenset` object but
3320 not an instance of a subtype.
3321
3322
3323.. cfunction:: int PyFrozenSet_CheckExact(PyObject *p)
3324
3325 Return true if *p* is a :class:`frozenset` object but not an instance of a
3326 subtype.
3327
3328
3329.. cfunction:: PyObject* PySet_New(PyObject *iterable)
3330
3331 Return a new :class:`set` containing objects returned by the *iterable*. The
3332 *iterable* may be *NULL* to create a new empty set. Return the new set on
3333 success or *NULL* on failure. Raise :exc:`TypeError` if *iterable* is not
3334 actually iterable. The constructor is also useful for copying a set
3335 (``c=set(s)``).
3336
3337
3338.. cfunction:: PyObject* PyFrozenSet_New(PyObject *iterable)
3339
3340 Return a new :class:`frozenset` containing objects returned by the *iterable*.
3341 The *iterable* may be *NULL* to create a new empty frozenset. Return the new
3342 set on success or *NULL* on failure. Raise :exc:`TypeError` if *iterable* is
3343 not actually iterable.
3344
3345The following functions and macros are available for instances of :class:`set`
3346or :class:`frozenset` or instances of their subtypes.
3347
3348
Thomas Wouters1b7f8912007-09-19 03:06:30 +00003349.. cfunction:: Py_ssize_t PySet_Size(PyObject *anyset)
Georg Brandl116aa622007-08-15 14:28:22 +00003350
3351 .. index:: builtin: len
3352
3353 Return the length of a :class:`set` or :class:`frozenset` object. Equivalent to
3354 ``len(anyset)``. Raises a :exc:`PyExc_SystemError` if *anyset* is not a
3355 :class:`set`, :class:`frozenset`, or an instance of a subtype.
3356
3357
Thomas Wouters1b7f8912007-09-19 03:06:30 +00003358.. cfunction:: Py_ssize_t PySet_GET_SIZE(PyObject *anyset)
Georg Brandl116aa622007-08-15 14:28:22 +00003359
3360 Macro form of :cfunc:`PySet_Size` without error checking.
3361
3362
3363.. cfunction:: int PySet_Contains(PyObject *anyset, PyObject *key)
3364
3365 Return 1 if found, 0 if not found, and -1 if an error is encountered. Unlike
3366 the Python :meth:`__contains__` method, this function does not automatically
3367 convert unhashable sets into temporary frozensets. Raise a :exc:`TypeError` if
3368 the *key* is unhashable. Raise :exc:`PyExc_SystemError` if *anyset* is not a
3369 :class:`set`, :class:`frozenset`, or an instance of a subtype.
3370
3371The following functions are available for instances of :class:`set` or its
3372subtypes but not for instances of :class:`frozenset` or its subtypes.
3373
3374
3375.. cfunction:: int PySet_Add(PyObject *set, PyObject *key)
3376
3377 Add *key* to a :class:`set` instance. Does not apply to :class:`frozenset`
3378 instances. Return 0 on success or -1 on failure. Raise a :exc:`TypeError` if
3379 the *key* is unhashable. Raise a :exc:`MemoryError` if there is no room to grow.
3380 Raise a :exc:`SystemError` if *set* is an not an instance of :class:`set` or its
3381 subtype.
3382
3383
3384.. cfunction:: int PySet_Discard(PyObject *set, PyObject *key)
3385
3386 Return 1 if found and removed, 0 if not found (no action taken), and -1 if an
3387 error is encountered. Does not raise :exc:`KeyError` for missing keys. Raise a
3388 :exc:`TypeError` if the *key* is unhashable. Unlike the Python :meth:`discard`
3389 method, this function does not automatically convert unhashable sets into
3390 temporary frozensets. Raise :exc:`PyExc_SystemError` if *set* is an not an
3391 instance of :class:`set` or its subtype.
3392
3393
3394.. cfunction:: PyObject* PySet_Pop(PyObject *set)
3395
3396 Return a new reference to an arbitrary object in the *set*, and removes the
3397 object from the *set*. Return *NULL* on failure. Raise :exc:`KeyError` if the
3398 set is empty. Raise a :exc:`SystemError` if *set* is an not an instance of
3399 :class:`set` or its subtype.
3400
3401
3402.. cfunction:: int PySet_Clear(PyObject *set)
3403
3404 Empty an existing set of all elements.
3405