blob: eefd927f889f4f5c7baa6c36a7a1dfe26e8b7363 [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
Georg Brandl9914dd32007-12-02 23:08:39 +0000214.. XXX cfunction PyInt_CheckExact(PyObject *p) checks if argument is a long
215 object and fits into a C long
216
217
Georg Brandl116aa622007-08-15 14:28:22 +0000218.. cfunction:: PyObject* PyLong_FromLong(long v)
219
220 Return a new :ctype:`PyLongObject` object from *v*, or *NULL* on failure.
221
Georg Brandl9914dd32007-12-02 23:08:39 +0000222 The current implementation keeps an array of integer objects for all integers
223 between ``-5`` and ``256``, when you create an int in that range you actually
224 just get back a reference to the existing object. So it should be possible to
225 change the value of ``1``. I suspect the behaviour of Python in this case is
226 undefined. :-)
227
Georg Brandl116aa622007-08-15 14:28:22 +0000228
229.. cfunction:: PyObject* PyLong_FromUnsignedLong(unsigned long v)
230
231 Return a new :ctype:`PyLongObject` object from a C :ctype:`unsigned long`, or
232 *NULL* on failure.
233
234
Georg Brandl9914dd32007-12-02 23:08:39 +0000235.. cfunction:: PyObject* PyLong_FromSsize_t(Py_ssize_t v)
236
237 Return a new :ctype:`PyLongObject` object with a value of *v*, or *NULL*
238 on failure.
239
240
241.. cfunction:: PyObject* PyLong_FromSize_t(size_t v)
242
243 Return a new :ctype:`PyLongObject` object with a value of *v*, or *NULL*
244 on failure.
245
246
Georg Brandl116aa622007-08-15 14:28:22 +0000247.. cfunction:: PyObject* PyLong_FromLongLong(PY_LONG_LONG v)
248
249 Return a new :ctype:`PyLongObject` object from a C :ctype:`long long`, or *NULL*
250 on failure.
251
252
253.. cfunction:: PyObject* PyLong_FromUnsignedLongLong(unsigned PY_LONG_LONG v)
254
255 Return a new :ctype:`PyLongObject` object from a C :ctype:`unsigned long long`,
256 or *NULL* on failure.
257
258
259.. cfunction:: PyObject* PyLong_FromDouble(double v)
260
261 Return a new :ctype:`PyLongObject` object from the integer part of *v*, or
262 *NULL* on failure.
263
264
265.. cfunction:: PyObject* PyLong_FromString(char *str, char **pend, int base)
266
Georg Brandl9914dd32007-12-02 23:08:39 +0000267 Return a new :ctype:`PyLongObject` based on the string value in *str*, which
268 is interpreted according to the radix in *base*. If *pend* is non-*NULL*,
Georg Brandl116aa622007-08-15 14:28:22 +0000269 ``*pend`` will point to the first character in *str* which follows the
Georg Brandl9914dd32007-12-02 23:08:39 +0000270 representation of the number. If *base* is ``0``, the radix will be
271 determined based on the leading characters of *str*: if *str* starts with
272 ``'0x'`` or ``'0X'``, radix 16 will be used; if *str* starts with ``'0o'`` or
273 ``'0O'``, radix 8 will be used; if *str* starts with ``'0b'`` or ``'0B'``,
274 radix 2 will be used; otherwise radix 10 will be used. If *base* is not
275 ``0``, it must be between ``2`` and ``36``, inclusive. Leading spaces are
276 ignored. If there are no digits, :exc:`ValueError` will be raised.
Georg Brandl116aa622007-08-15 14:28:22 +0000277
278
279.. cfunction:: PyObject* PyLong_FromUnicode(Py_UNICODE *u, Py_ssize_t length, int base)
280
Georg Brandl9914dd32007-12-02 23:08:39 +0000281 Convert a sequence of Unicode digits to a Python integer value. The Unicode
282 string is first encoded to a byte string using :cfunc:`PyUnicode_EncodeDecimal`
283 and then converted using :cfunc:`PyLong_FromString`.
Georg Brandl116aa622007-08-15 14:28:22 +0000284
Georg Brandl116aa622007-08-15 14:28:22 +0000285
286.. cfunction:: PyObject* PyLong_FromVoidPtr(void *p)
287
Georg Brandl9914dd32007-12-02 23:08:39 +0000288 Create a Python integer from the pointer *p*. The pointer value can be
289 retrieved from the resulting value using :cfunc:`PyLong_AsVoidPtr`.
Georg Brandl116aa622007-08-15 14:28:22 +0000290
291
Georg Brandl9914dd32007-12-02 23:08:39 +0000292.. XXX alias PyLong_AS_LONG (for now)
Georg Brandl116aa622007-08-15 14:28:22 +0000293.. cfunction:: long PyLong_AsLong(PyObject *pylong)
294
295 .. index::
296 single: LONG_MAX
297 single: OverflowError (built-in exception)
298
299 Return a C :ctype:`long` representation of the contents of *pylong*. If
300 *pylong* is greater than :const:`LONG_MAX`, an :exc:`OverflowError` is raised.
301
302
303.. cfunction:: unsigned long PyLong_AsUnsignedLong(PyObject *pylong)
304
305 .. index::
306 single: ULONG_MAX
307 single: OverflowError (built-in exception)
308
309 Return a C :ctype:`unsigned long` representation of the contents of *pylong*.
310 If *pylong* is greater than :const:`ULONG_MAX`, an :exc:`OverflowError` is
311 raised.
312
313
Georg Brandl9914dd32007-12-02 23:08:39 +0000314.. cfunction:: Py_ssize_t PyLong_AsSsize_t(PyObject *pylong)
315
316 .. index::
317 single: PY_SSIZE_T_MAX
318
319 Return a :ctype:`Py_ssize_t` representation of the contents of *pylong*. If
320 *pylong* is greater than :const:`PY_SSIZE_T_MAX`, an :exc:`OverflowError` is
321 raised.
322
323
324.. cfunction:: size_t PyLong_AsSize_t(PyObject *pylong)
325
326 Return a :ctype:`size_t` representation of the contents of *pylong*. If
327 *pylong* is greater than the maximum value for a :ctype:`size_t`, an
328 :exc:`OverflowError` is raised.
329
330
Georg Brandl116aa622007-08-15 14:28:22 +0000331.. cfunction:: PY_LONG_LONG PyLong_AsLongLong(PyObject *pylong)
332
Georg Brandl9914dd32007-12-02 23:08:39 +0000333 Return a C :ctype:`long long` from a Python integer. If *pylong* cannot be
Georg Brandl116aa622007-08-15 14:28:22 +0000334 represented as a :ctype:`long long`, an :exc:`OverflowError` will be raised.
335
Georg Brandl116aa622007-08-15 14:28:22 +0000336
337.. cfunction:: unsigned PY_LONG_LONG PyLong_AsUnsignedLongLong(PyObject *pylong)
338
Georg Brandl9914dd32007-12-02 23:08:39 +0000339 Return a C :ctype:`unsigned long long` from a Python integer. If *pylong*
Georg Brandl116aa622007-08-15 14:28:22 +0000340 cannot be represented as an :ctype:`unsigned long long`, an :exc:`OverflowError`
341 will be raised if the value is positive, or a :exc:`TypeError` will be raised if
342 the value is negative.
343
Georg Brandl116aa622007-08-15 14:28:22 +0000344
345.. cfunction:: unsigned long PyLong_AsUnsignedLongMask(PyObject *io)
346
Georg Brandl9914dd32007-12-02 23:08:39 +0000347 Return a C :ctype:`unsigned long` from a Python integer, without checking for
348 overflow.
Georg Brandl116aa622007-08-15 14:28:22 +0000349
Georg Brandl116aa622007-08-15 14:28:22 +0000350
351.. cfunction:: unsigned PY_LONG_LONG PyLong_AsUnsignedLongLongMask(PyObject *io)
352
Georg Brandl9914dd32007-12-02 23:08:39 +0000353 Return a C :ctype:`unsigned long long` from a Python integer, without
Georg Brandl116aa622007-08-15 14:28:22 +0000354 checking for overflow.
355
Georg Brandl116aa622007-08-15 14:28:22 +0000356
357.. cfunction:: double PyLong_AsDouble(PyObject *pylong)
358
359 Return a C :ctype:`double` representation of the contents of *pylong*. If
360 *pylong* cannot be approximately represented as a :ctype:`double`, an
361 :exc:`OverflowError` exception is raised and ``-1.0`` will be returned.
362
363
364.. cfunction:: void* PyLong_AsVoidPtr(PyObject *pylong)
365
Georg Brandl9914dd32007-12-02 23:08:39 +0000366 Convert a Python integer *pylong* to a C :ctype:`void` pointer. If *pylong*
367 cannot be converted, an :exc:`OverflowError` will be raised. This is only
368 assured to produce a usable :ctype:`void` pointer for values created with
369 :cfunc:`PyLong_FromVoidPtr`.
Georg Brandl116aa622007-08-15 14:28:22 +0000370
Georg Brandl9914dd32007-12-02 23:08:39 +0000371
372.. XXX name?
373.. cfunction:: long PyInt_GetMax()
374
375 .. index:: single: LONG_MAX
376
377 Return the system's idea of the largest integer it can handle
378 (:const:`LONG_MAX`, as defined in the system header files).
Georg Brandl116aa622007-08-15 14:28:22 +0000379
380
381.. _floatobjects:
382
383Floating Point Objects
384----------------------
385
386.. index:: object: floating point
387
388
389.. ctype:: PyFloatObject
390
391 This subtype of :ctype:`PyObject` represents a Python floating point object.
392
393
394.. cvar:: PyTypeObject PyFloat_Type
395
396 .. index:: single: FloatType (in modules types)
397
398 This instance of :ctype:`PyTypeObject` represents the Python floating point
399 type. This is the same object as ``float`` and ``types.FloatType``.
400
401
402.. cfunction:: int PyFloat_Check(PyObject *p)
403
404 Return true if its argument is a :ctype:`PyFloatObject` or a subtype of
405 :ctype:`PyFloatObject`.
406
Georg Brandl116aa622007-08-15 14:28:22 +0000407
408.. cfunction:: int PyFloat_CheckExact(PyObject *p)
409
410 Return true if its argument is a :ctype:`PyFloatObject`, but not a subtype of
411 :ctype:`PyFloatObject`.
412
Georg Brandl116aa622007-08-15 14:28:22 +0000413
414.. cfunction:: PyObject* PyFloat_FromString(PyObject *str)
415
416 Create a :ctype:`PyFloatObject` object based on the string value in *str*, or
417 *NULL* on failure.
418
419
420.. cfunction:: PyObject* PyFloat_FromDouble(double v)
421
422 Create a :ctype:`PyFloatObject` object from *v*, or *NULL* on failure.
423
424
425.. cfunction:: double PyFloat_AsDouble(PyObject *pyfloat)
426
427 Return a C :ctype:`double` representation of the contents of *pyfloat*. If
428 *pyfloat* is not a Python floating point object but has a :meth:`__float__`
429 method, this method will first be called to convert *pyfloat* into a float.
430
431
432.. cfunction:: double PyFloat_AS_DOUBLE(PyObject *pyfloat)
433
434 Return a C :ctype:`double` representation of the contents of *pyfloat*, but
435 without error checking.
436
437
Christian Heimes93852662007-12-01 12:22:32 +0000438.. cfunction:: PyObject* PyFloat_GetInfo(void)
439
440 Return a :ctype:`PyDictObject` object which contains information about the
441 precision, minimum and maximum values of a float. It's a thin wrapper
442 around the header file :file:`float.h`.
443
444
445.. cfunction:: double PyFloat_GetMax(void)
446
447 Return the maximum representable finite float *DBL_MAX* as C :ctype:`double`.
448
449
450.. cfunction:: double PyFloat_GetMin(void)
451
452 Return the minimum normalized positive float *DBL_MIN* as C :ctype:`double`.
453
454
Georg Brandl116aa622007-08-15 14:28:22 +0000455.. _complexobjects:
456
457Complex Number Objects
458----------------------
459
460.. index:: object: complex number
461
462Python's complex number objects are implemented as two distinct types when
463viewed from the C API: one is the Python object exposed to Python programs, and
464the other is a C structure which represents the actual complex number value.
465The API provides functions for working with both.
466
467
468Complex Numbers as C Structures
469^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
470
471Note that the functions which accept these structures as parameters and return
472them as results do so *by value* rather than dereferencing them through
473pointers. This is consistent throughout the API.
474
475
476.. ctype:: Py_complex
477
478 The C structure which corresponds to the value portion of a Python complex
479 number object. Most of the functions for dealing with complex number objects
480 use structures of this type as input or output values, as appropriate. It is
481 defined as::
482
483 typedef struct {
484 double real;
485 double imag;
486 } Py_complex;
487
488
489.. cfunction:: Py_complex _Py_c_sum(Py_complex left, Py_complex right)
490
491 Return the sum of two complex numbers, using the C :ctype:`Py_complex`
492 representation.
493
494
495.. cfunction:: Py_complex _Py_c_diff(Py_complex left, Py_complex right)
496
497 Return the difference between two complex numbers, using the C
498 :ctype:`Py_complex` representation.
499
500
501.. cfunction:: Py_complex _Py_c_neg(Py_complex complex)
502
503 Return the negation of the complex number *complex*, using the C
504 :ctype:`Py_complex` representation.
505
506
507.. cfunction:: Py_complex _Py_c_prod(Py_complex left, Py_complex right)
508
509 Return the product of two complex numbers, using the C :ctype:`Py_complex`
510 representation.
511
512
513.. cfunction:: Py_complex _Py_c_quot(Py_complex dividend, Py_complex divisor)
514
515 Return the quotient of two complex numbers, using the C :ctype:`Py_complex`
516 representation.
517
518
519.. cfunction:: Py_complex _Py_c_pow(Py_complex num, Py_complex exp)
520
521 Return the exponentiation of *num* by *exp*, using the C :ctype:`Py_complex`
522 representation.
523
524
525Complex Numbers as Python Objects
526^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
527
528
529.. ctype:: PyComplexObject
530
531 This subtype of :ctype:`PyObject` represents a Python complex number object.
532
533
534.. cvar:: PyTypeObject PyComplex_Type
535
536 This instance of :ctype:`PyTypeObject` represents the Python complex number
537 type. It is the same object as ``complex`` and ``types.ComplexType``.
538
539
540.. cfunction:: int PyComplex_Check(PyObject *p)
541
542 Return true if its argument is a :ctype:`PyComplexObject` or a subtype of
543 :ctype:`PyComplexObject`.
544
Georg Brandl116aa622007-08-15 14:28:22 +0000545
546.. cfunction:: int PyComplex_CheckExact(PyObject *p)
547
548 Return true if its argument is a :ctype:`PyComplexObject`, but not a subtype of
549 :ctype:`PyComplexObject`.
550
Georg Brandl116aa622007-08-15 14:28:22 +0000551
552.. cfunction:: PyObject* PyComplex_FromCComplex(Py_complex v)
553
554 Create a new Python complex number object from a C :ctype:`Py_complex` value.
555
556
557.. cfunction:: PyObject* PyComplex_FromDoubles(double real, double imag)
558
559 Return a new :ctype:`PyComplexObject` object from *real* and *imag*.
560
561
562.. cfunction:: double PyComplex_RealAsDouble(PyObject *op)
563
564 Return the real part of *op* as a C :ctype:`double`.
565
566
567.. cfunction:: double PyComplex_ImagAsDouble(PyObject *op)
568
569 Return the imaginary part of *op* as a C :ctype:`double`.
570
571
572.. cfunction:: Py_complex PyComplex_AsCComplex(PyObject *op)
573
574 Return the :ctype:`Py_complex` value of the complex number *op*.
575
Georg Brandl321976b2007-09-01 12:33:24 +0000576 If *op* is not a Python complex number object but has a :meth:`__complex__`
577 method, this method will first be called to convert *op* to a Python complex
578 number object.
Georg Brandl116aa622007-08-15 14:28:22 +0000579
580
581.. _sequenceobjects:
582
583Sequence Objects
584================
585
586.. index:: object: sequence
587
588Generic operations on sequence objects were discussed in the previous chapter;
589this section deals with the specific kinds of sequence objects that are
590intrinsic to the Python language.
591
592
593.. _stringobjects:
594
595String Objects
596--------------
597
598These functions raise :exc:`TypeError` when expecting a string parameter and are
599called with a non-string parameter.
600
601.. index:: object: string
602
603
604.. ctype:: PyStringObject
605
606 This subtype of :ctype:`PyObject` represents a Python string object.
607
608
609.. cvar:: PyTypeObject PyString_Type
610
611 .. index:: single: StringType (in module types)
612
613 This instance of :ctype:`PyTypeObject` represents the Python string type; it is
614 the same object as ``str`` and ``types.StringType`` in the Python layer. .
615
616
617.. cfunction:: int PyString_Check(PyObject *o)
618
619 Return true if the object *o* is a string object or an instance of a subtype of
620 the string type.
621
Georg Brandl116aa622007-08-15 14:28:22 +0000622
623.. cfunction:: int PyString_CheckExact(PyObject *o)
624
625 Return true if the object *o* is a string object, but not an instance of a
626 subtype of the string type.
627
Georg Brandl116aa622007-08-15 14:28:22 +0000628
629.. cfunction:: PyObject* PyString_FromString(const char *v)
630
631 Return a new string object with a copy of the string *v* as value on success,
632 and *NULL* on failure. The parameter *v* must not be *NULL*; it will not be
633 checked.
634
635
636.. cfunction:: PyObject* PyString_FromStringAndSize(const char *v, Py_ssize_t len)
637
638 Return a new string object with a copy of the string *v* as value and length
639 *len* on success, and *NULL* on failure. If *v* is *NULL*, the contents of the
640 string are uninitialized.
641
642
643.. cfunction:: PyObject* PyString_FromFormat(const char *format, ...)
644
645 Take a C :cfunc:`printf`\ -style *format* string and a variable number of
646 arguments, calculate the size of the resulting Python string and return a string
647 with the values formatted into it. The variable arguments must be C types and
648 must correspond exactly to the format characters in the *format* string. The
649 following format characters are allowed:
650
Georg Brandl321976b2007-09-01 12:33:24 +0000651 .. % XXX: This should be exactly the same as the table in PyErr_Format.
Georg Brandl116aa622007-08-15 14:28:22 +0000652 .. % One should just refer to the other.
Georg Brandl321976b2007-09-01 12:33:24 +0000653 .. % XXX: The descriptions for %zd and %zu are wrong, but the truth is complicated
Georg Brandl116aa622007-08-15 14:28:22 +0000654 .. % because not all compilers support the %z width modifier -- we fake it
655 .. % when necessary via interpolating PY_FORMAT_SIZE_T.
656 .. % %u, %lu, %zu should have "new in Python 2.5" blurbs.
657
658 +-------------------+---------------+--------------------------------+
659 | Format Characters | Type | Comment |
660 +===================+===============+================================+
661 | :attr:`%%` | *n/a* | The literal % character. |
662 +-------------------+---------------+--------------------------------+
663 | :attr:`%c` | int | A single character, |
664 | | | represented as an C int. |
665 +-------------------+---------------+--------------------------------+
666 | :attr:`%d` | int | Exactly equivalent to |
667 | | | ``printf("%d")``. |
668 +-------------------+---------------+--------------------------------+
669 | :attr:`%u` | unsigned int | Exactly equivalent to |
670 | | | ``printf("%u")``. |
671 +-------------------+---------------+--------------------------------+
672 | :attr:`%ld` | long | Exactly equivalent to |
673 | | | ``printf("%ld")``. |
674 +-------------------+---------------+--------------------------------+
675 | :attr:`%lu` | unsigned long | Exactly equivalent to |
676 | | | ``printf("%lu")``. |
677 +-------------------+---------------+--------------------------------+
678 | :attr:`%zd` | Py_ssize_t | Exactly equivalent to |
679 | | | ``printf("%zd")``. |
680 +-------------------+---------------+--------------------------------+
681 | :attr:`%zu` | size_t | Exactly equivalent to |
682 | | | ``printf("%zu")``. |
683 +-------------------+---------------+--------------------------------+
684 | :attr:`%i` | int | Exactly equivalent to |
685 | | | ``printf("%i")``. |
686 +-------------------+---------------+--------------------------------+
687 | :attr:`%x` | int | Exactly equivalent to |
688 | | | ``printf("%x")``. |
689 +-------------------+---------------+--------------------------------+
690 | :attr:`%s` | char\* | A null-terminated C character |
691 | | | array. |
692 +-------------------+---------------+--------------------------------+
693 | :attr:`%p` | void\* | The hex representation of a C |
694 | | | pointer. Mostly equivalent to |
695 | | | ``printf("%p")`` except that |
696 | | | it is guaranteed to start with |
697 | | | the literal ``0x`` regardless |
698 | | | of what the platform's |
699 | | | ``printf`` yields. |
700 +-------------------+---------------+--------------------------------+
701
702 An unrecognized format character causes all the rest of the format string to be
703 copied as-is to the result string, and any extra arguments discarded.
704
705
706.. cfunction:: PyObject* PyString_FromFormatV(const char *format, va_list vargs)
707
708 Identical to :func:`PyString_FromFormat` except that it takes exactly two
709 arguments.
710
711
712.. cfunction:: Py_ssize_t PyString_Size(PyObject *string)
713
714 Return the length of the string in string object *string*.
715
716
717.. cfunction:: Py_ssize_t PyString_GET_SIZE(PyObject *string)
718
719 Macro form of :cfunc:`PyString_Size` but without error checking.
720
721
722.. cfunction:: char* PyString_AsString(PyObject *string)
723
724 Return a NUL-terminated representation of the contents of *string*. The pointer
725 refers to the internal buffer of *string*, not a copy. The data must not be
726 modified in any way, unless the string was just created using
727 ``PyString_FromStringAndSize(NULL, size)``. It must not be deallocated. If
728 *string* is a Unicode object, this function computes the default encoding of
729 *string* and operates on that. If *string* is not a string object at all,
730 :cfunc:`PyString_AsString` returns *NULL* and raises :exc:`TypeError`.
731
732
733.. cfunction:: char* PyString_AS_STRING(PyObject *string)
734
735 Macro form of :cfunc:`PyString_AsString` but without error checking. Only
736 string objects are supported; no Unicode objects should be passed.
737
738
739.. cfunction:: int PyString_AsStringAndSize(PyObject *obj, char **buffer, Py_ssize_t *length)
740
741 Return a NUL-terminated representation of the contents of the object *obj*
742 through the output variables *buffer* and *length*.
743
744 The function accepts both string and Unicode objects as input. For Unicode
745 objects it returns the default encoded version of the object. If *length* is
746 *NULL*, the resulting buffer may not contain NUL characters; if it does, the
747 function returns ``-1`` and a :exc:`TypeError` is raised.
748
749 The buffer refers to an internal string buffer of *obj*, not a copy. The data
750 must not be modified in any way, unless the string was just created using
751 ``PyString_FromStringAndSize(NULL, size)``. It must not be deallocated. If
752 *string* is a Unicode object, this function computes the default encoding of
753 *string* and operates on that. If *string* is not a string object at all,
754 :cfunc:`PyString_AsStringAndSize` returns ``-1`` and raises :exc:`TypeError`.
755
756
757.. cfunction:: void PyString_Concat(PyObject **string, PyObject *newpart)
758
759 Create a new string object in *\*string* containing the contents of *newpart*
760 appended to *string*; the caller will own the new reference. The reference to
761 the old value of *string* will be stolen. If the new string cannot be created,
762 the old reference to *string* will still be discarded and the value of
763 *\*string* will be set to *NULL*; the appropriate exception will be set.
764
765
766.. cfunction:: void PyString_ConcatAndDel(PyObject **string, PyObject *newpart)
767
768 Create a new string object in *\*string* containing the contents of *newpart*
769 appended to *string*. This version decrements the reference count of *newpart*.
770
771
772.. cfunction:: int _PyString_Resize(PyObject **string, Py_ssize_t newsize)
773
774 A way to resize a string object even though it is "immutable". Only use this to
775 build up a brand new string object; don't use this if the string may already be
776 known in other parts of the code. It is an error to call this function if the
777 refcount on the input string object is not one. Pass the address of an existing
778 string object as an lvalue (it may be written into), and the new size desired.
779 On success, *\*string* holds the resized string object and ``0`` is returned;
780 the address in *\*string* may differ from its input value. If the reallocation
781 fails, the original string object at *\*string* is deallocated, *\*string* is
782 set to *NULL*, a memory exception is set, and ``-1`` is returned.
783
784
785.. cfunction:: PyObject* PyString_Format(PyObject *format, PyObject *args)
786
787 Return a new string object from *format* and *args*. Analogous to ``format %
788 args``. The *args* argument must be a tuple.
789
790
791.. cfunction:: void PyString_InternInPlace(PyObject **string)
792
793 Intern the argument *\*string* in place. The argument must be the address of a
794 pointer variable pointing to a Python string object. If there is an existing
795 interned string that is the same as *\*string*, it sets *\*string* to it
796 (decrementing the reference count of the old string object and incrementing the
797 reference count of the interned string object), otherwise it leaves *\*string*
798 alone and interns it (incrementing its reference count). (Clarification: even
799 though there is a lot of talk about reference counts, think of this function as
800 reference-count-neutral; you own the object after the call if and only if you
801 owned it before the call.)
802
803
804.. cfunction:: PyObject* PyString_InternFromString(const char *v)
805
806 A combination of :cfunc:`PyString_FromString` and
807 :cfunc:`PyString_InternInPlace`, returning either a new string object that has
808 been interned, or a new ("owned") reference to an earlier interned string object
809 with the same value.
810
811
812.. cfunction:: PyObject* PyString_Decode(const char *s, Py_ssize_t size, const char *encoding, const char *errors)
813
814 Create an object by decoding *size* bytes of the encoded buffer *s* using the
815 codec registered for *encoding*. *encoding* and *errors* have the same meaning
816 as the parameters of the same name in the :func:`unicode` built-in function.
817 The codec to be used is looked up using the Python codec registry. Return
818 *NULL* if an exception was raised by the codec.
819
820
821.. cfunction:: PyObject* PyString_AsDecodedObject(PyObject *str, const char *encoding, const char *errors)
822
823 Decode a string object by passing it to the codec registered for *encoding* and
824 return the result as Python object. *encoding* and *errors* have the same
825 meaning as the parameters of the same name in the string :meth:`encode` method.
826 The codec to be used is looked up using the Python codec registry. Return *NULL*
827 if an exception was raised by the codec.
828
829
Georg Brandl116aa622007-08-15 14:28:22 +0000830.. cfunction:: PyObject* PyString_AsEncodedObject(PyObject *str, const char *encoding, const char *errors)
831
832 Encode a string object using the codec registered for *encoding* and return the
833 result as Python object. *encoding* and *errors* have the same meaning as the
834 parameters of the same name in the string :meth:`encode` method. The codec to be
835 used is looked up using the Python codec registry. Return *NULL* if an exception
836 was raised by the codec.
837
838
839.. _unicodeobjects:
840
841Unicode Objects
842---------------
843
844.. sectionauthor:: Marc-Andre Lemburg <mal@lemburg.com>
845
846
847These are the basic Unicode object types used for the Unicode implementation in
848Python:
849
850.. % --- Unicode Type -------------------------------------------------------
851
852
853.. ctype:: Py_UNICODE
854
855 This type represents the storage type which is used by Python internally as
856 basis for holding Unicode ordinals. Python's default builds use a 16-bit type
857 for :ctype:`Py_UNICODE` and store Unicode values internally as UCS2. It is also
858 possible to build a UCS4 version of Python (most recent Linux distributions come
859 with UCS4 builds of Python). These builds then use a 32-bit type for
860 :ctype:`Py_UNICODE` and store Unicode data internally as UCS4. On platforms
861 where :ctype:`wchar_t` is available and compatible with the chosen Python
862 Unicode build variant, :ctype:`Py_UNICODE` is a typedef alias for
863 :ctype:`wchar_t` to enhance native platform compatibility. On all other
864 platforms, :ctype:`Py_UNICODE` is a typedef alias for either :ctype:`unsigned
865 short` (UCS2) or :ctype:`unsigned long` (UCS4).
866
867Note that UCS2 and UCS4 Python builds are not binary compatible. Please keep
868this in mind when writing extensions or interfaces.
869
870
871.. ctype:: PyUnicodeObject
872
873 This subtype of :ctype:`PyObject` represents a Python Unicode object.
874
875
876.. cvar:: PyTypeObject PyUnicode_Type
877
878 This instance of :ctype:`PyTypeObject` represents the Python Unicode type. It
Collin Winterd1d9a892007-08-28 06:09:47 +0000879 is exposed to Python code as ``str``.
Georg Brandl116aa622007-08-15 14:28:22 +0000880
881The following APIs are really C macros and can be used to do fast checks and to
882access internal read-only data of Unicode objects:
883
884
885.. cfunction:: int PyUnicode_Check(PyObject *o)
886
887 Return true if the object *o* is a Unicode object or an instance of a Unicode
888 subtype.
889
Georg Brandl116aa622007-08-15 14:28:22 +0000890
891.. cfunction:: int PyUnicode_CheckExact(PyObject *o)
892
893 Return true if the object *o* is a Unicode object, but not an instance of a
894 subtype.
895
Georg Brandl116aa622007-08-15 14:28:22 +0000896
897.. cfunction:: Py_ssize_t PyUnicode_GET_SIZE(PyObject *o)
898
899 Return the size of the object. *o* has to be a :ctype:`PyUnicodeObject` (not
900 checked).
901
902
903.. cfunction:: Py_ssize_t PyUnicode_GET_DATA_SIZE(PyObject *o)
904
905 Return the size of the object's internal buffer in bytes. *o* has to be a
906 :ctype:`PyUnicodeObject` (not checked).
907
908
909.. cfunction:: Py_UNICODE* PyUnicode_AS_UNICODE(PyObject *o)
910
911 Return a pointer to the internal :ctype:`Py_UNICODE` buffer of the object. *o*
912 has to be a :ctype:`PyUnicodeObject` (not checked).
913
914
915.. cfunction:: const char* PyUnicode_AS_DATA(PyObject *o)
916
917 Return a pointer to the internal buffer of the object. *o* has to be a
918 :ctype:`PyUnicodeObject` (not checked).
919
920Unicode provides many different character properties. The most often needed ones
921are available through these macros which are mapped to C functions depending on
922the Python configuration.
923
924.. % --- Unicode character properties ---------------------------------------
925
926
927.. cfunction:: int Py_UNICODE_ISSPACE(Py_UNICODE ch)
928
929 Return 1 or 0 depending on whether *ch* is a whitespace character.
930
931
932.. cfunction:: int Py_UNICODE_ISLOWER(Py_UNICODE ch)
933
934 Return 1 or 0 depending on whether *ch* is a lowercase character.
935
936
937.. cfunction:: int Py_UNICODE_ISUPPER(Py_UNICODE ch)
938
939 Return 1 or 0 depending on whether *ch* is an uppercase character.
940
941
942.. cfunction:: int Py_UNICODE_ISTITLE(Py_UNICODE ch)
943
944 Return 1 or 0 depending on whether *ch* is a titlecase character.
945
946
947.. cfunction:: int Py_UNICODE_ISLINEBREAK(Py_UNICODE ch)
948
949 Return 1 or 0 depending on whether *ch* is a linebreak character.
950
951
952.. cfunction:: int Py_UNICODE_ISDECIMAL(Py_UNICODE ch)
953
954 Return 1 or 0 depending on whether *ch* is a decimal character.
955
956
957.. cfunction:: int Py_UNICODE_ISDIGIT(Py_UNICODE ch)
958
959 Return 1 or 0 depending on whether *ch* is a digit character.
960
961
962.. cfunction:: int Py_UNICODE_ISNUMERIC(Py_UNICODE ch)
963
964 Return 1 or 0 depending on whether *ch* is a numeric character.
965
966
967.. cfunction:: int Py_UNICODE_ISALPHA(Py_UNICODE ch)
968
969 Return 1 or 0 depending on whether *ch* is an alphabetic character.
970
971
972.. cfunction:: int Py_UNICODE_ISALNUM(Py_UNICODE ch)
973
974 Return 1 or 0 depending on whether *ch* is an alphanumeric character.
975
976These APIs can be used for fast direct character conversions:
977
978
979.. cfunction:: Py_UNICODE Py_UNICODE_TOLOWER(Py_UNICODE ch)
980
981 Return the character *ch* converted to lower case.
982
983
984.. cfunction:: Py_UNICODE Py_UNICODE_TOUPPER(Py_UNICODE ch)
985
986 Return the character *ch* converted to upper case.
987
988
989.. cfunction:: Py_UNICODE Py_UNICODE_TOTITLE(Py_UNICODE ch)
990
991 Return the character *ch* converted to title case.
992
993
994.. cfunction:: int Py_UNICODE_TODECIMAL(Py_UNICODE ch)
995
996 Return the character *ch* converted to a decimal positive integer. Return
997 ``-1`` if this is not possible. This macro does not raise exceptions.
998
999
1000.. cfunction:: int Py_UNICODE_TODIGIT(Py_UNICODE ch)
1001
1002 Return the character *ch* converted to a single digit integer. Return ``-1`` if
1003 this is not possible. This macro does not raise exceptions.
1004
1005
1006.. cfunction:: double Py_UNICODE_TONUMERIC(Py_UNICODE ch)
1007
1008 Return the character *ch* converted to a double. Return ``-1.0`` if this is not
1009 possible. This macro does not raise exceptions.
1010
1011To create Unicode objects and access their basic sequence properties, use these
1012APIs:
1013
1014.. % --- Plain Py_UNICODE ---------------------------------------------------
1015
1016
1017.. cfunction:: PyObject* PyUnicode_FromUnicode(const Py_UNICODE *u, Py_ssize_t size)
1018
1019 Create a Unicode Object from the Py_UNICODE buffer *u* of the given size. *u*
1020 may be *NULL* which causes the contents to be undefined. It is the user's
1021 responsibility to fill in the needed data. The buffer is copied into the new
1022 object. If the buffer is not *NULL*, the return value might be a shared object.
1023 Therefore, modification of the resulting Unicode object is only allowed when *u*
1024 is *NULL*.
1025
1026
1027.. cfunction:: PyObject* PyUnicode_FromStringAndSize(const char *u, Py_ssize_t size)
1028
1029 Create a Unicode Object from the char buffer *u*. The bytes will be interpreted
1030 as being UTF-8 encoded. *u* may also be *NULL* which
1031 causes the contents to be undefined. It is the user's responsibility to fill in
1032 the needed data. The buffer is copied into the new object. If the buffer is not
1033 *NULL*, the return value might be a shared object. Therefore, modification of
1034 the resulting Unicode object is only allowed when *u* is *NULL*.
1035
Georg Brandl116aa622007-08-15 14:28:22 +00001036
1037.. cfunction:: PyObject *PyUnicode_FromString(const char *u)
1038
1039 Create a Unicode object from an UTF-8 encoded null-terminated char buffer
1040 *u*.
1041
Georg Brandl116aa622007-08-15 14:28:22 +00001042
1043.. cfunction:: PyObject* PyUnicode_FromFormat(const char *format, ...)
1044
1045 Take a C :cfunc:`printf`\ -style *format* string and a variable number of
1046 arguments, calculate the size of the resulting Python unicode string and return
1047 a string with the values formatted into it. The variable arguments must be C
1048 types and must correspond exactly to the format characters in the *format*
1049 string. The following format characters are allowed:
1050
1051 .. % The descriptions for %zd and %zu are wrong, but the truth is complicated
1052 .. % because not all compilers support the %z width modifier -- we fake it
1053 .. % when necessary via interpolating PY_FORMAT_SIZE_T.
1054
1055 +-------------------+---------------------+--------------------------------+
1056 | Format Characters | Type | Comment |
1057 +===================+=====================+================================+
1058 | :attr:`%%` | *n/a* | The literal % character. |
1059 +-------------------+---------------------+--------------------------------+
1060 | :attr:`%c` | int | A single character, |
1061 | | | represented as an C int. |
1062 +-------------------+---------------------+--------------------------------+
1063 | :attr:`%d` | int | Exactly equivalent to |
1064 | | | ``printf("%d")``. |
1065 +-------------------+---------------------+--------------------------------+
1066 | :attr:`%u` | unsigned int | Exactly equivalent to |
1067 | | | ``printf("%u")``. |
1068 +-------------------+---------------------+--------------------------------+
1069 | :attr:`%ld` | long | Exactly equivalent to |
1070 | | | ``printf("%ld")``. |
1071 +-------------------+---------------------+--------------------------------+
1072 | :attr:`%lu` | unsigned long | Exactly equivalent to |
1073 | | | ``printf("%lu")``. |
1074 +-------------------+---------------------+--------------------------------+
1075 | :attr:`%zd` | Py_ssize_t | Exactly equivalent to |
1076 | | | ``printf("%zd")``. |
1077 +-------------------+---------------------+--------------------------------+
1078 | :attr:`%zu` | size_t | Exactly equivalent to |
1079 | | | ``printf("%zu")``. |
1080 +-------------------+---------------------+--------------------------------+
1081 | :attr:`%i` | int | Exactly equivalent to |
1082 | | | ``printf("%i")``. |
1083 +-------------------+---------------------+--------------------------------+
1084 | :attr:`%x` | int | Exactly equivalent to |
1085 | | | ``printf("%x")``. |
1086 +-------------------+---------------------+--------------------------------+
1087 | :attr:`%s` | char\* | A null-terminated C character |
1088 | | | array. |
1089 +-------------------+---------------------+--------------------------------+
1090 | :attr:`%p` | void\* | The hex representation of a C |
1091 | | | pointer. Mostly equivalent to |
1092 | | | ``printf("%p")`` except that |
1093 | | | it is guaranteed to start with |
1094 | | | the literal ``0x`` regardless |
1095 | | | of what the platform's |
1096 | | | ``printf`` yields. |
1097 +-------------------+---------------------+--------------------------------+
1098 | :attr:`%U` | PyObject\* | A unicode object. |
1099 +-------------------+---------------------+--------------------------------+
1100 | :attr:`%V` | PyObject\*, char \* | A unicode object (which may be |
1101 | | | *NULL*) and a null-terminated |
1102 | | | C character array as a second |
1103 | | | parameter (which will be used, |
1104 | | | if the first parameter is |
1105 | | | *NULL*). |
1106 +-------------------+---------------------+--------------------------------+
1107 | :attr:`%S` | PyObject\* | The result of calling |
1108 | | | :func:`PyObject_Unicode`. |
1109 +-------------------+---------------------+--------------------------------+
1110 | :attr:`%R` | PyObject\* | The result of calling |
1111 | | | :func:`PyObject_Repr`. |
1112 +-------------------+---------------------+--------------------------------+
1113
1114 An unrecognized format character causes all the rest of the format string to be
1115 copied as-is to the result string, and any extra arguments discarded.
1116
Georg Brandl116aa622007-08-15 14:28:22 +00001117
1118.. cfunction:: PyObject* PyUnicode_FromFormatV(const char *format, va_list vargs)
1119
1120 Identical to :func:`PyUnicode_FromFormat` except that it takes exactly two
1121 arguments.
1122
Georg Brandl116aa622007-08-15 14:28:22 +00001123
1124.. cfunction:: Py_UNICODE* PyUnicode_AsUnicode(PyObject *unicode)
1125
1126 Return a read-only pointer to the Unicode object's internal :ctype:`Py_UNICODE`
1127 buffer, *NULL* if *unicode* is not a Unicode object.
1128
1129
1130.. cfunction:: Py_ssize_t PyUnicode_GetSize(PyObject *unicode)
1131
1132 Return the length of the Unicode object.
1133
1134
1135.. cfunction:: PyObject* PyUnicode_FromEncodedObject(PyObject *obj, const char *encoding, const char *errors)
1136
1137 Coerce an encoded object *obj* to an Unicode object and return a reference with
1138 incremented refcount.
1139
1140 String and other char buffer compatible objects are decoded according to the
1141 given encoding and using the error handling defined by errors. Both can be
1142 *NULL* to have the interface use the default values (see the next section for
1143 details).
1144
1145 All other objects, including Unicode objects, cause a :exc:`TypeError` to be
1146 set.
1147
1148 The API returns *NULL* if there was an error. The caller is responsible for
1149 decref'ing the returned objects.
1150
1151
1152.. cfunction:: PyObject* PyUnicode_FromObject(PyObject *obj)
1153
1154 Shortcut for ``PyUnicode_FromEncodedObject(obj, NULL, "strict")`` which is used
1155 throughout the interpreter whenever coercion to Unicode is needed.
1156
1157If the platform supports :ctype:`wchar_t` and provides a header file wchar.h,
1158Python can interface directly to this type using the following functions.
1159Support is optimized if Python's own :ctype:`Py_UNICODE` type is identical to
1160the system's :ctype:`wchar_t`.
1161
1162.. % --- wchar_t support for platforms which support it ---------------------
1163
1164
1165.. cfunction:: PyObject* PyUnicode_FromWideChar(const wchar_t *w, Py_ssize_t size)
1166
1167 Create a Unicode object from the :ctype:`wchar_t` buffer *w* of the given size.
1168 Return *NULL* on failure.
1169
1170
1171.. cfunction:: Py_ssize_t PyUnicode_AsWideChar(PyUnicodeObject *unicode, wchar_t *w, Py_ssize_t size)
1172
1173 Copy the Unicode object contents into the :ctype:`wchar_t` buffer *w*. At most
1174 *size* :ctype:`wchar_t` characters are copied (excluding a possibly trailing
1175 0-termination character). Return the number of :ctype:`wchar_t` characters
1176 copied or -1 in case of an error. Note that the resulting :ctype:`wchar_t`
1177 string may or may not be 0-terminated. It is the responsibility of the caller
1178 to make sure that the :ctype:`wchar_t` string is 0-terminated in case this is
1179 required by the application.
1180
1181
1182.. _builtincodecs:
1183
1184Built-in Codecs
1185^^^^^^^^^^^^^^^
1186
1187Python provides a set of builtin codecs which are written in C for speed. All of
1188these codecs are directly usable via the following functions.
1189
1190Many of the following APIs take two arguments encoding and errors. These
1191parameters encoding and errors have the same semantics as the ones of the
1192builtin unicode() Unicode object constructor.
1193
1194Setting encoding to *NULL* causes the default encoding to be used which is
1195ASCII. The file system calls should use :cdata:`Py_FileSystemDefaultEncoding`
1196as the encoding for file names. This variable should be treated as read-only: On
1197some systems, it will be a pointer to a static string, on others, it will change
1198at run-time (such as when the application invokes setlocale).
1199
1200Error handling is set by errors which may also be set to *NULL* meaning to use
1201the default handling defined for the codec. Default error handling for all
1202builtin codecs is "strict" (:exc:`ValueError` is raised).
1203
1204The codecs all use a similar interface. Only deviation from the following
1205generic ones are documented for simplicity.
1206
1207These are the generic codec APIs:
1208
1209.. % --- Generic Codecs -----------------------------------------------------
1210
1211
1212.. cfunction:: PyObject* PyUnicode_Decode(const char *s, Py_ssize_t size, const char *encoding, const char *errors)
1213
1214 Create a Unicode object by decoding *size* bytes of the encoded string *s*.
1215 *encoding* and *errors* have the same meaning as the parameters of the same name
1216 in the :func:`unicode` builtin function. The codec to be used is looked up
1217 using the Python codec registry. Return *NULL* if an exception was raised by
1218 the codec.
1219
1220
1221.. cfunction:: PyObject* PyUnicode_Encode(const Py_UNICODE *s, Py_ssize_t size, const char *encoding, const char *errors)
1222
1223 Encode the :ctype:`Py_UNICODE` buffer of the given size and return a Python
1224 string object. *encoding* and *errors* have the same meaning as the parameters
1225 of the same name in the Unicode :meth:`encode` method. The codec to be used is
1226 looked up using the Python codec registry. Return *NULL* if an exception was
1227 raised by the codec.
1228
1229
1230.. cfunction:: PyObject* PyUnicode_AsEncodedString(PyObject *unicode, const char *encoding, const char *errors)
1231
1232 Encode a Unicode object and return the result as Python string object.
1233 *encoding* and *errors* have the same meaning as the parameters of the same name
1234 in the Unicode :meth:`encode` method. The codec to be used is looked up using
1235 the Python codec registry. Return *NULL* if an exception was raised by the
1236 codec.
1237
1238These are the UTF-8 codec APIs:
1239
1240.. % --- UTF-8 Codecs -------------------------------------------------------
1241
1242
1243.. cfunction:: PyObject* PyUnicode_DecodeUTF8(const char *s, Py_ssize_t size, const char *errors)
1244
1245 Create a Unicode object by decoding *size* bytes of the UTF-8 encoded string
1246 *s*. Return *NULL* if an exception was raised by the codec.
1247
1248
1249.. cfunction:: PyObject* PyUnicode_DecodeUTF8Stateful(const char *s, Py_ssize_t size, const char *errors, Py_ssize_t *consumed)
1250
1251 If *consumed* is *NULL*, behave like :cfunc:`PyUnicode_DecodeUTF8`. If
1252 *consumed* is not *NULL*, trailing incomplete UTF-8 byte sequences will not be
1253 treated as an error. Those bytes will not be decoded and the number of bytes
1254 that have been decoded will be stored in *consumed*.
1255
Georg Brandl116aa622007-08-15 14:28:22 +00001256
1257.. cfunction:: PyObject* PyUnicode_EncodeUTF8(const Py_UNICODE *s, Py_ssize_t size, const char *errors)
1258
1259 Encode the :ctype:`Py_UNICODE` buffer of the given size using UTF-8 and return a
1260 Python string object. Return *NULL* if an exception was raised by the codec.
1261
1262
1263.. cfunction:: PyObject* PyUnicode_AsUTF8String(PyObject *unicode)
1264
1265 Encode a Unicode objects using UTF-8 and return the result as Python string
1266 object. Error handling is "strict". Return *NULL* if an exception was raised
1267 by the codec.
1268
Walter Dörwald41980ca2007-08-16 21:55:45 +00001269These are the UTF-32 codec APIs:
1270
1271.. % --- UTF-32 Codecs ------------------------------------------------------ */
1272
1273
1274.. cfunction:: PyObject* PyUnicode_DecodeUTF32(const char *s, Py_ssize_t size, const char *errors, int *byteorder)
1275
1276 Decode *length* bytes from a UTF-32 encoded buffer string and return the
1277 corresponding Unicode object. *errors* (if non-*NULL*) defines the error
1278 handling. It defaults to "strict".
1279
1280 If *byteorder* is non-*NULL*, the decoder starts decoding using the given byte
1281 order::
1282
1283 *byteorder == -1: little endian
1284 *byteorder == 0: native order
1285 *byteorder == 1: big endian
1286
1287 and then switches if the first four bytes of the input data are a byte order mark
1288 (BOM) and the specified byte order is native order. This BOM is not copied into
1289 the resulting Unicode string. After completion, *\*byteorder* is set to the
1290 current byte order at the end of input data.
1291
1292 In a narrow build codepoints outside the BMP will be decoded as surrogate pairs.
1293
1294 If *byteorder* is *NULL*, the codec starts in native order mode.
1295
1296 Return *NULL* if an exception was raised by the codec.
1297
Walter Dörwald41980ca2007-08-16 21:55:45 +00001298
1299.. cfunction:: PyObject* PyUnicode_DecodeUTF32Stateful(const char *s, Py_ssize_t size, const char *errors, int *byteorder, Py_ssize_t *consumed)
1300
1301 If *consumed* is *NULL*, behave like :cfunc:`PyUnicode_DecodeUTF32`. If
1302 *consumed* is not *NULL*, :cfunc:`PyUnicode_DecodeUTF32Stateful` will not treat
1303 trailing incomplete UTF-32 byte sequences (such as a number of bytes not divisible
1304 by four) as an error. Those bytes will not be decoded and the number of bytes
1305 that have been decoded will be stored in *consumed*.
1306
Walter Dörwald41980ca2007-08-16 21:55:45 +00001307
1308.. cfunction:: PyObject* PyUnicode_EncodeUTF32(const Py_UNICODE *s, Py_ssize_t size, const char *errors, int byteorder)
1309
1310 Return a Python bytes object holding the UTF-32 encoded value of the Unicode
1311 data in *s*. If *byteorder* is not ``0``, output is written according to the
1312 following byte order::
1313
1314 byteorder == -1: little endian
1315 byteorder == 0: native byte order (writes a BOM mark)
1316 byteorder == 1: big endian
1317
1318 If byteorder is ``0``, the output string will always start with the Unicode BOM
1319 mark (U+FEFF). In the other two modes, no BOM mark is prepended.
1320
1321 If *Py_UNICODE_WIDE* is not defined, surrogate pairs will be output
1322 as a single codepoint.
1323
1324 Return *NULL* if an exception was raised by the codec.
1325
1326
1327.. cfunction:: PyObject* PyUnicode_AsUTF32String(PyObject *unicode)
1328
1329 Return a Python string using the UTF-32 encoding in native byte order. The
1330 string always starts with a BOM mark. Error handling is "strict". Return
1331 *NULL* if an exception was raised by the codec.
1332
Walter Dörwald19e62382007-08-17 16:23:21 +00001333
Georg Brandl116aa622007-08-15 14:28:22 +00001334These are the UTF-16 codec APIs:
1335
1336.. % --- UTF-16 Codecs ------------------------------------------------------ */
1337
1338
1339.. cfunction:: PyObject* PyUnicode_DecodeUTF16(const char *s, Py_ssize_t size, const char *errors, int *byteorder)
1340
1341 Decode *length* bytes from a UTF-16 encoded buffer string and return the
1342 corresponding Unicode object. *errors* (if non-*NULL*) defines the error
1343 handling. It defaults to "strict".
1344
1345 If *byteorder* is non-*NULL*, the decoder starts decoding using the given byte
1346 order::
1347
1348 *byteorder == -1: little endian
1349 *byteorder == 0: native order
1350 *byteorder == 1: big endian
1351
1352 and then switches if the first two bytes of the input data are a byte order mark
1353 (BOM) and the specified byte order is native order. This BOM is not copied into
1354 the resulting Unicode string. After completion, *\*byteorder* is set to the
Walter Dörwaldd9a15792007-08-16 16:55:51 +00001355 current byte order at the end of input data.
Georg Brandl116aa622007-08-15 14:28:22 +00001356
1357 If *byteorder* is *NULL*, the codec starts in native order mode.
1358
1359 Return *NULL* if an exception was raised by the codec.
1360
1361
1362.. cfunction:: PyObject* PyUnicode_DecodeUTF16Stateful(const char *s, Py_ssize_t size, const char *errors, int *byteorder, Py_ssize_t *consumed)
1363
1364 If *consumed* is *NULL*, behave like :cfunc:`PyUnicode_DecodeUTF16`. If
1365 *consumed* is not *NULL*, :cfunc:`PyUnicode_DecodeUTF16Stateful` will not treat
1366 trailing incomplete UTF-16 byte sequences (such as an odd number of bytes or a
1367 split surrogate pair) as an error. Those bytes will not be decoded and the
1368 number of bytes that have been decoded will be stored in *consumed*.
1369
Georg Brandl116aa622007-08-15 14:28:22 +00001370
1371.. cfunction:: PyObject* PyUnicode_EncodeUTF16(const Py_UNICODE *s, Py_ssize_t size, const char *errors, int byteorder)
1372
1373 Return a Python string object holding the UTF-16 encoded value of the Unicode
1374 data in *s*. If *byteorder* is not ``0``, output is written according to the
1375 following byte order::
1376
1377 byteorder == -1: little endian
1378 byteorder == 0: native byte order (writes a BOM mark)
1379 byteorder == 1: big endian
1380
1381 If byteorder is ``0``, the output string will always start with the Unicode BOM
1382 mark (U+FEFF). In the other two modes, no BOM mark is prepended.
1383
1384 If *Py_UNICODE_WIDE* is defined, a single :ctype:`Py_UNICODE` value may get
1385 represented as a surrogate pair. If it is not defined, each :ctype:`Py_UNICODE`
1386 values is interpreted as an UCS-2 character.
1387
1388 Return *NULL* if an exception was raised by the codec.
1389
1390
1391.. cfunction:: PyObject* PyUnicode_AsUTF16String(PyObject *unicode)
1392
1393 Return a Python string using the UTF-16 encoding in native byte order. The
1394 string always starts with a BOM mark. Error handling is "strict". Return
1395 *NULL* if an exception was raised by the codec.
1396
1397These are the "Unicode Escape" codec APIs:
1398
1399.. % --- Unicode-Escape Codecs ----------------------------------------------
1400
1401
1402.. cfunction:: PyObject* PyUnicode_DecodeUnicodeEscape(const char *s, Py_ssize_t size, const char *errors)
1403
1404 Create a Unicode object by decoding *size* bytes of the Unicode-Escape encoded
1405 string *s*. Return *NULL* if an exception was raised by the codec.
1406
1407
1408.. cfunction:: PyObject* PyUnicode_EncodeUnicodeEscape(const Py_UNICODE *s, Py_ssize_t size)
1409
1410 Encode the :ctype:`Py_UNICODE` buffer of the given size using Unicode-Escape and
1411 return a Python string object. Return *NULL* if an exception was raised by the
1412 codec.
1413
1414
1415.. cfunction:: PyObject* PyUnicode_AsUnicodeEscapeString(PyObject *unicode)
1416
1417 Encode a Unicode objects using Unicode-Escape and return the result as Python
1418 string object. Error handling is "strict". Return *NULL* if an exception was
1419 raised by the codec.
1420
1421These are the "Raw Unicode Escape" codec APIs:
1422
1423.. % --- Raw-Unicode-Escape Codecs ------------------------------------------
1424
1425
1426.. cfunction:: PyObject* PyUnicode_DecodeRawUnicodeEscape(const char *s, Py_ssize_t size, const char *errors)
1427
1428 Create a Unicode object by decoding *size* bytes of the Raw-Unicode-Escape
1429 encoded string *s*. Return *NULL* if an exception was raised by the codec.
1430
1431
1432.. cfunction:: PyObject* PyUnicode_EncodeRawUnicodeEscape(const Py_UNICODE *s, Py_ssize_t size, const char *errors)
1433
1434 Encode the :ctype:`Py_UNICODE` buffer of the given size using Raw-Unicode-Escape
1435 and return a Python string object. Return *NULL* if an exception was raised by
1436 the codec.
1437
1438
1439.. cfunction:: PyObject* PyUnicode_AsRawUnicodeEscapeString(PyObject *unicode)
1440
1441 Encode a Unicode objects using Raw-Unicode-Escape and return the result as
1442 Python string object. Error handling is "strict". Return *NULL* if an exception
1443 was raised by the codec.
1444
1445These are the Latin-1 codec APIs: Latin-1 corresponds to the first 256 Unicode
1446ordinals and only these are accepted by the codecs during encoding.
1447
1448.. % --- Latin-1 Codecs -----------------------------------------------------
1449
1450
1451.. cfunction:: PyObject* PyUnicode_DecodeLatin1(const char *s, Py_ssize_t size, const char *errors)
1452
1453 Create a Unicode object by decoding *size* bytes of the Latin-1 encoded string
1454 *s*. Return *NULL* if an exception was raised by the codec.
1455
1456
1457.. cfunction:: PyObject* PyUnicode_EncodeLatin1(const Py_UNICODE *s, Py_ssize_t size, const char *errors)
1458
1459 Encode the :ctype:`Py_UNICODE` buffer of the given size using Latin-1 and return
1460 a Python string object. Return *NULL* if an exception was raised by the codec.
1461
1462
1463.. cfunction:: PyObject* PyUnicode_AsLatin1String(PyObject *unicode)
1464
1465 Encode a Unicode objects using Latin-1 and return the result as Python string
1466 object. Error handling is "strict". Return *NULL* if an exception was raised
1467 by the codec.
1468
1469These are the ASCII codec APIs. Only 7-bit ASCII data is accepted. All other
1470codes generate errors.
1471
1472.. % --- ASCII Codecs -------------------------------------------------------
1473
1474
1475.. cfunction:: PyObject* PyUnicode_DecodeASCII(const char *s, Py_ssize_t size, const char *errors)
1476
1477 Create a Unicode object by decoding *size* bytes of the ASCII encoded string
1478 *s*. Return *NULL* if an exception was raised by the codec.
1479
1480
1481.. cfunction:: PyObject* PyUnicode_EncodeASCII(const Py_UNICODE *s, Py_ssize_t size, const char *errors)
1482
1483 Encode the :ctype:`Py_UNICODE` buffer of the given size using ASCII and return a
1484 Python string object. Return *NULL* if an exception was raised by the codec.
1485
1486
1487.. cfunction:: PyObject* PyUnicode_AsASCIIString(PyObject *unicode)
1488
1489 Encode a Unicode objects using ASCII and return the result as Python string
1490 object. Error handling is "strict". Return *NULL* if an exception was raised
1491 by the codec.
1492
1493These are the mapping codec APIs:
1494
1495.. % --- Character Map Codecs -----------------------------------------------
1496
1497This codec is special in that it can be used to implement many different codecs
1498(and this is in fact what was done to obtain most of the standard codecs
1499included in the :mod:`encodings` package). The codec uses mapping to encode and
1500decode characters.
1501
1502Decoding mappings must map single string characters to single Unicode
1503characters, integers (which are then interpreted as Unicode ordinals) or None
1504(meaning "undefined mapping" and causing an error).
1505
1506Encoding mappings must map single Unicode characters to single string
1507characters, integers (which are then interpreted as Latin-1 ordinals) or None
1508(meaning "undefined mapping" and causing an error).
1509
1510The mapping objects provided must only support the __getitem__ mapping
1511interface.
1512
1513If a character lookup fails with a LookupError, the character is copied as-is
1514meaning that its ordinal value will be interpreted as Unicode or Latin-1 ordinal
1515resp. Because of this, mappings only need to contain those mappings which map
1516characters to different code points.
1517
1518
1519.. cfunction:: PyObject* PyUnicode_DecodeCharmap(const char *s, Py_ssize_t size, PyObject *mapping, const char *errors)
1520
1521 Create a Unicode object by decoding *size* bytes of the encoded string *s* using
1522 the given *mapping* object. Return *NULL* if an exception was raised by the
1523 codec. If *mapping* is *NULL* latin-1 decoding will be done. Else it can be a
1524 dictionary mapping byte or a unicode string, which is treated as a lookup table.
1525 Byte values greater that the length of the string and U+FFFE "characters" are
1526 treated as "undefined mapping".
1527
Georg Brandl116aa622007-08-15 14:28:22 +00001528
1529.. cfunction:: PyObject* PyUnicode_EncodeCharmap(const Py_UNICODE *s, Py_ssize_t size, PyObject *mapping, const char *errors)
1530
1531 Encode the :ctype:`Py_UNICODE` buffer of the given size using the given
1532 *mapping* object and return a Python string object. Return *NULL* if an
1533 exception was raised by the codec.
1534
1535
1536.. cfunction:: PyObject* PyUnicode_AsCharmapString(PyObject *unicode, PyObject *mapping)
1537
1538 Encode a Unicode objects using the given *mapping* object and return the result
1539 as Python string object. Error handling is "strict". Return *NULL* if an
1540 exception was raised by the codec.
1541
1542The following codec API is special in that maps Unicode to Unicode.
1543
1544
1545.. cfunction:: PyObject* PyUnicode_TranslateCharmap(const Py_UNICODE *s, Py_ssize_t size, PyObject *table, const char *errors)
1546
1547 Translate a :ctype:`Py_UNICODE` buffer of the given length by applying a
1548 character mapping *table* to it and return the resulting Unicode object. Return
1549 *NULL* when an exception was raised by the codec.
1550
1551 The *mapping* table must map Unicode ordinal integers to Unicode ordinal
1552 integers or None (causing deletion of the character).
1553
1554 Mapping tables need only provide the :meth:`__getitem__` interface; dictionaries
1555 and sequences work well. Unmapped character ordinals (ones which cause a
1556 :exc:`LookupError`) are left untouched and are copied as-is.
1557
1558These are the MBCS codec APIs. They are currently only available on Windows and
1559use the Win32 MBCS converters to implement the conversions. Note that MBCS (or
1560DBCS) is a class of encodings, not just one. The target encoding is defined by
1561the user settings on the machine running the codec.
1562
1563.. % --- MBCS codecs for Windows --------------------------------------------
1564
1565
1566.. cfunction:: PyObject* PyUnicode_DecodeMBCS(const char *s, Py_ssize_t size, const char *errors)
1567
1568 Create a Unicode object by decoding *size* bytes of the MBCS encoded string *s*.
1569 Return *NULL* if an exception was raised by the codec.
1570
1571
1572.. cfunction:: PyObject* PyUnicode_DecodeMBCSStateful(const char *s, int size, const char *errors, int *consumed)
1573
1574 If *consumed* is *NULL*, behave like :cfunc:`PyUnicode_DecodeMBCS`. If
1575 *consumed* is not *NULL*, :cfunc:`PyUnicode_DecodeMBCSStateful` will not decode
1576 trailing lead byte and the number of bytes that have been decoded will be stored
1577 in *consumed*.
1578
Georg Brandl116aa622007-08-15 14:28:22 +00001579
1580.. cfunction:: PyObject* PyUnicode_EncodeMBCS(const Py_UNICODE *s, Py_ssize_t size, const char *errors)
1581
1582 Encode the :ctype:`Py_UNICODE` buffer of the given size using MBCS and return a
1583 Python string object. Return *NULL* if an exception was raised by the codec.
1584
1585
1586.. cfunction:: PyObject* PyUnicode_AsMBCSString(PyObject *unicode)
1587
1588 Encode a Unicode objects using MBCS and return the result as Python string
1589 object. Error handling is "strict". Return *NULL* if an exception was raised
1590 by the codec.
1591
1592.. % --- Methods & Slots ----------------------------------------------------
1593
1594
1595.. _unicodemethodsandslots:
1596
1597Methods and Slot Functions
1598^^^^^^^^^^^^^^^^^^^^^^^^^^
1599
1600The following APIs are capable of handling Unicode objects and strings on input
1601(we refer to them as strings in the descriptions) and return Unicode objects or
1602integers as appropriate.
1603
1604They all return *NULL* or ``-1`` if an exception occurs.
1605
1606
1607.. cfunction:: PyObject* PyUnicode_Concat(PyObject *left, PyObject *right)
1608
1609 Concat two strings giving a new Unicode string.
1610
1611
1612.. cfunction:: PyObject* PyUnicode_Split(PyObject *s, PyObject *sep, Py_ssize_t maxsplit)
1613
1614 Split a string giving a list of Unicode strings. If sep is *NULL*, splitting
1615 will be done at all whitespace substrings. Otherwise, splits occur at the given
1616 separator. At most *maxsplit* splits will be done. If negative, no limit is
1617 set. Separators are not included in the resulting list.
1618
1619
1620.. cfunction:: PyObject* PyUnicode_Splitlines(PyObject *s, int keepend)
1621
1622 Split a Unicode string at line breaks, returning a list of Unicode strings.
1623 CRLF is considered to be one line break. If *keepend* is 0, the Line break
1624 characters are not included in the resulting strings.
1625
1626
1627.. cfunction:: PyObject* PyUnicode_Translate(PyObject *str, PyObject *table, const char *errors)
1628
1629 Translate a string by applying a character mapping table to it and return the
1630 resulting Unicode object.
1631
1632 The mapping table must map Unicode ordinal integers to Unicode ordinal integers
1633 or None (causing deletion of the character).
1634
1635 Mapping tables need only provide the :meth:`__getitem__` interface; dictionaries
1636 and sequences work well. Unmapped character ordinals (ones which cause a
1637 :exc:`LookupError`) are left untouched and are copied as-is.
1638
1639 *errors* has the usual meaning for codecs. It may be *NULL* which indicates to
1640 use the default error handling.
1641
1642
1643.. cfunction:: PyObject* PyUnicode_Join(PyObject *separator, PyObject *seq)
1644
1645 Join a sequence of strings using the given separator and return the resulting
1646 Unicode string.
1647
1648
1649.. cfunction:: int PyUnicode_Tailmatch(PyObject *str, PyObject *substr, Py_ssize_t start, Py_ssize_t end, int direction)
1650
1651 Return 1 if *substr* matches *str*[*start*:*end*] at the given tail end
1652 (*direction* == -1 means to do a prefix match, *direction* == 1 a suffix match),
1653 0 otherwise. Return ``-1`` if an error occurred.
1654
1655
1656.. cfunction:: Py_ssize_t PyUnicode_Find(PyObject *str, PyObject *substr, Py_ssize_t start, Py_ssize_t end, int direction)
1657
1658 Return the first position of *substr* in *str*[*start*:*end*] using the given
1659 *direction* (*direction* == 1 means to do a forward search, *direction* == -1 a
1660 backward search). The return value is the index of the first match; a value of
1661 ``-1`` indicates that no match was found, and ``-2`` indicates that an error
1662 occurred and an exception has been set.
1663
1664
1665.. cfunction:: Py_ssize_t PyUnicode_Count(PyObject *str, PyObject *substr, Py_ssize_t start, Py_ssize_t end)
1666
1667 Return the number of non-overlapping occurrences of *substr* in
1668 ``str[start:end]``. Return ``-1`` if an error occurred.
1669
1670
1671.. cfunction:: PyObject* PyUnicode_Replace(PyObject *str, PyObject *substr, PyObject *replstr, Py_ssize_t maxcount)
1672
1673 Replace at most *maxcount* occurrences of *substr* in *str* with *replstr* and
1674 return the resulting Unicode object. *maxcount* == -1 means replace all
1675 occurrences.
1676
1677
1678.. cfunction:: int PyUnicode_Compare(PyObject *left, PyObject *right)
1679
1680 Compare two strings and return -1, 0, 1 for less than, equal, and greater than,
1681 respectively.
1682
1683
1684.. cfunction:: int PyUnicode_RichCompare(PyObject *left, PyObject *right, int op)
1685
1686 Rich compare two unicode strings and return one of the following:
1687
1688 * ``NULL`` in case an exception was raised
1689 * :const:`Py_True` or :const:`Py_False` for successful comparisons
1690 * :const:`Py_NotImplemented` in case the type combination is unknown
1691
1692 Note that :const:`Py_EQ` and :const:`Py_NE` comparisons can cause a
1693 :exc:`UnicodeWarning` in case the conversion of the arguments to Unicode fails
1694 with a :exc:`UnicodeDecodeError`.
1695
1696 Possible values for *op* are :const:`Py_GT`, :const:`Py_GE`, :const:`Py_EQ`,
1697 :const:`Py_NE`, :const:`Py_LT`, and :const:`Py_LE`.
1698
1699
1700.. cfunction:: PyObject* PyUnicode_Format(PyObject *format, PyObject *args)
1701
1702 Return a new string object from *format* and *args*; this is analogous to
1703 ``format % args``. The *args* argument must be a tuple.
1704
1705
1706.. cfunction:: int PyUnicode_Contains(PyObject *container, PyObject *element)
1707
1708 Check whether *element* is contained in *container* and return true or false
1709 accordingly.
1710
1711 *element* has to coerce to a one element Unicode string. ``-1`` is returned if
1712 there was an error.
1713
1714
1715.. cfunction:: void PyUnicode_InternInPlace(PyObject **string)
1716
1717 Intern the argument *\*string* in place. The argument must be the address of a
1718 pointer variable pointing to a Python unicode string object. If there is an
1719 existing interned string that is the same as *\*string*, it sets *\*string* to
1720 it (decrementing the reference count of the old string object and incrementing
1721 the reference count of the interned string object), otherwise it leaves
1722 *\*string* alone and interns it (incrementing its reference count).
1723 (Clarification: even though there is a lot of talk about reference counts, think
1724 of this function as reference-count-neutral; you own the object after the call
1725 if and only if you owned it before the call.)
1726
1727
1728.. cfunction:: PyObject* PyUnicode_InternFromString(const char *v)
1729
1730 A combination of :cfunc:`PyUnicode_FromString` and
1731 :cfunc:`PyUnicode_InternInPlace`, returning either a new unicode string object
1732 that has been interned, or a new ("owned") reference to an earlier interned
1733 string object with the same value.
1734
1735
1736.. _bufferobjects:
1737
1738Buffer Objects
1739--------------
1740
1741.. sectionauthor:: Greg Stein <gstein@lyra.org>
1742
1743
1744.. index::
1745 object: buffer
1746 single: buffer interface
1747
1748Python objects implemented in C can export a group of functions called the
1749"buffer interface." These functions can be used by an object to expose its data
1750in a raw, byte-oriented format. Clients of the object can use the buffer
1751interface to access the object data directly, without needing to copy it first.
1752
1753Two examples of objects that support the buffer interface are strings and
1754arrays. The string object exposes the character contents in the buffer
1755interface's byte-oriented form. An array can also expose its contents, but it
1756should be noted that array elements may be multi-byte values.
1757
1758An example user of the buffer interface is the file object's :meth:`write`
1759method. Any object that can export a series of bytes through the buffer
1760interface can be written to a file. There are a number of format codes to
1761:cfunc:`PyArg_ParseTuple` that operate against an object's buffer interface,
1762returning data from the target object.
1763
1764.. index:: single: PyBufferProcs
1765
1766More information on the buffer interface is provided in the section
1767:ref:`buffer-structs`, under the description for :ctype:`PyBufferProcs`.
1768
1769A "buffer object" is defined in the :file:`bufferobject.h` header (included by
1770:file:`Python.h`). These objects look very similar to string objects at the
1771Python programming level: they support slicing, indexing, concatenation, and
1772some other standard string operations. However, their data can come from one of
1773two sources: from a block of memory, or from another object which exports the
1774buffer interface.
1775
1776Buffer objects are useful as a way to expose the data from another object's
1777buffer interface to the Python programmer. They can also be used as a zero-copy
1778slicing mechanism. Using their ability to reference a block of memory, it is
1779possible to expose any data to the Python programmer quite easily. The memory
1780could be a large, constant array in a C extension, it could be a raw block of
1781memory for manipulation before passing to an operating system library, or it
1782could be used to pass around structured data in its native, in-memory format.
1783
1784
1785.. ctype:: PyBufferObject
1786
1787 This subtype of :ctype:`PyObject` represents a buffer object.
1788
1789
1790.. cvar:: PyTypeObject PyBuffer_Type
1791
1792 .. index:: single: BufferType (in module types)
1793
1794 The instance of :ctype:`PyTypeObject` which represents the Python buffer type;
1795 it is the same object as ``buffer`` and ``types.BufferType`` in the Python
1796 layer. .
1797
1798
1799.. cvar:: int Py_END_OF_BUFFER
1800
1801 This constant may be passed as the *size* parameter to
1802 :cfunc:`PyBuffer_FromObject` or :cfunc:`PyBuffer_FromReadWriteObject`. It
1803 indicates that the new :ctype:`PyBufferObject` should refer to *base* object
1804 from the specified *offset* to the end of its exported buffer. Using this
1805 enables the caller to avoid querying the *base* object for its length.
1806
1807
1808.. cfunction:: int PyBuffer_Check(PyObject *p)
1809
1810 Return true if the argument has type :cdata:`PyBuffer_Type`.
1811
1812
1813.. cfunction:: PyObject* PyBuffer_FromObject(PyObject *base, Py_ssize_t offset, Py_ssize_t size)
1814
1815 Return a new read-only buffer object. This raises :exc:`TypeError` if *base*
1816 doesn't support the read-only buffer protocol or doesn't provide exactly one
1817 buffer segment, or it raises :exc:`ValueError` if *offset* is less than zero.
1818 The buffer will hold a reference to the *base* object, and the buffer's contents
1819 will refer to the *base* object's buffer interface, starting as position
1820 *offset* and extending for *size* bytes. If *size* is :const:`Py_END_OF_BUFFER`,
1821 then the new buffer's contents extend to the length of the *base* object's
1822 exported buffer data.
1823
1824
1825.. cfunction:: PyObject* PyBuffer_FromReadWriteObject(PyObject *base, Py_ssize_t offset, Py_ssize_t size)
1826
1827 Return a new writable buffer object. Parameters and exceptions are similar to
1828 those for :cfunc:`PyBuffer_FromObject`. If the *base* object does not export
Sean Reifscheider54cf12b2007-09-17 17:55:36 +00001829 the writable buffer protocol, then :exc:`TypeError` is raised.
Georg Brandl116aa622007-08-15 14:28:22 +00001830
1831
1832.. cfunction:: PyObject* PyBuffer_FromMemory(void *ptr, Py_ssize_t size)
1833
1834 Return a new read-only buffer object that reads from a specified location in
1835 memory, with a specified size. The caller is responsible for ensuring that the
1836 memory buffer, passed in as *ptr*, is not deallocated while the returned buffer
1837 object exists. Raises :exc:`ValueError` if *size* is less than zero. Note that
1838 :const:`Py_END_OF_BUFFER` may *not* be passed for the *size* parameter;
1839 :exc:`ValueError` will be raised in that case.
1840
1841
1842.. cfunction:: PyObject* PyBuffer_FromReadWriteMemory(void *ptr, Py_ssize_t size)
1843
1844 Similar to :cfunc:`PyBuffer_FromMemory`, but the returned buffer is writable.
1845
1846
1847.. cfunction:: PyObject* PyBuffer_New(Py_ssize_t size)
1848
1849 Return a new writable buffer object that maintains its own memory buffer of
1850 *size* bytes. :exc:`ValueError` is returned if *size* is not zero or positive.
1851 Note that the memory buffer (as returned by :cfunc:`PyObject_AsWriteBuffer`) is
1852 not specifically aligned.
1853
1854
1855.. _tupleobjects:
1856
1857Tuple Objects
1858-------------
1859
1860.. index:: object: tuple
1861
1862
1863.. ctype:: PyTupleObject
1864
1865 This subtype of :ctype:`PyObject` represents a Python tuple object.
1866
1867
1868.. cvar:: PyTypeObject PyTuple_Type
1869
1870 .. index:: single: TupleType (in module types)
1871
1872 This instance of :ctype:`PyTypeObject` represents the Python tuple type; it is
1873 the same object as ``tuple`` and ``types.TupleType`` in the Python layer..
1874
1875
1876.. cfunction:: int PyTuple_Check(PyObject *p)
1877
1878 Return true if *p* is a tuple object or an instance of a subtype of the tuple
1879 type.
1880
Georg Brandl116aa622007-08-15 14:28:22 +00001881
1882.. cfunction:: int PyTuple_CheckExact(PyObject *p)
1883
1884 Return true if *p* is a tuple object, but not an instance of a subtype of the
1885 tuple type.
1886
Georg Brandl116aa622007-08-15 14:28:22 +00001887
1888.. cfunction:: PyObject* PyTuple_New(Py_ssize_t len)
1889
1890 Return a new tuple object of size *len*, or *NULL* on failure.
1891
1892
1893.. cfunction:: PyObject* PyTuple_Pack(Py_ssize_t n, ...)
1894
1895 Return a new tuple object of size *n*, or *NULL* on failure. The tuple values
1896 are initialized to the subsequent *n* C arguments pointing to Python objects.
1897 ``PyTuple_Pack(2, a, b)`` is equivalent to ``Py_BuildValue("(OO)", a, b)``.
1898
Georg Brandl116aa622007-08-15 14:28:22 +00001899
Thomas Wouters1b7f8912007-09-19 03:06:30 +00001900.. cfunction:: Py_ssize_t PyTuple_Size(PyObject *p)
Georg Brandl116aa622007-08-15 14:28:22 +00001901
1902 Take a pointer to a tuple object, and return the size of that tuple.
1903
1904
Thomas Wouters1b7f8912007-09-19 03:06:30 +00001905.. cfunction:: Py_ssize_t PyTuple_GET_SIZE(PyObject *p)
Georg Brandl116aa622007-08-15 14:28:22 +00001906
1907 Return the size of the tuple *p*, which must be non-*NULL* and point to a tuple;
1908 no error checking is performed.
1909
1910
1911.. cfunction:: PyObject* PyTuple_GetItem(PyObject *p, Py_ssize_t pos)
1912
1913 Return the object at position *pos* in the tuple pointed to by *p*. If *pos* is
1914 out of bounds, return *NULL* and sets an :exc:`IndexError` exception.
1915
1916
1917.. cfunction:: PyObject* PyTuple_GET_ITEM(PyObject *p, Py_ssize_t pos)
1918
1919 Like :cfunc:`PyTuple_GetItem`, but does no checking of its arguments.
1920
1921
1922.. cfunction:: PyObject* PyTuple_GetSlice(PyObject *p, Py_ssize_t low, Py_ssize_t high)
1923
1924 Take a slice of the tuple pointed to by *p* from *low* to *high* and return it
1925 as a new tuple.
1926
1927
1928.. cfunction:: int PyTuple_SetItem(PyObject *p, Py_ssize_t pos, PyObject *o)
1929
1930 Insert a reference to object *o* at position *pos* of the tuple pointed to by
1931 *p*. Return ``0`` on success.
1932
1933 .. note::
1934
1935 This function "steals" a reference to *o*.
1936
1937
1938.. cfunction:: void PyTuple_SET_ITEM(PyObject *p, Py_ssize_t pos, PyObject *o)
1939
1940 Like :cfunc:`PyTuple_SetItem`, but does no error checking, and should *only* be
1941 used to fill in brand new tuples.
1942
1943 .. note::
1944
1945 This function "steals" a reference to *o*.
1946
1947
1948.. cfunction:: int _PyTuple_Resize(PyObject **p, Py_ssize_t newsize)
1949
1950 Can be used to resize a tuple. *newsize* will be the new length of the tuple.
1951 Because tuples are *supposed* to be immutable, this should only be used if there
1952 is only one reference to the object. Do *not* use this if the tuple may already
1953 be known to some other part of the code. The tuple will always grow or shrink
1954 at the end. Think of this as destroying the old tuple and creating a new one,
1955 only more efficiently. Returns ``0`` on success. Client code should never
1956 assume that the resulting value of ``*p`` will be the same as before calling
1957 this function. If the object referenced by ``*p`` is replaced, the original
1958 ``*p`` is destroyed. On failure, returns ``-1`` and sets ``*p`` to *NULL*, and
1959 raises :exc:`MemoryError` or :exc:`SystemError`.
1960
Georg Brandl116aa622007-08-15 14:28:22 +00001961
1962.. _listobjects:
1963
1964List Objects
1965------------
1966
1967.. index:: object: list
1968
1969
1970.. ctype:: PyListObject
1971
1972 This subtype of :ctype:`PyObject` represents a Python list object.
1973
1974
1975.. cvar:: PyTypeObject PyList_Type
1976
1977 .. index:: single: ListType (in module types)
1978
1979 This instance of :ctype:`PyTypeObject` represents the Python list type. This is
1980 the same object as ``list`` and ``types.ListType`` in the Python layer.
1981
1982
1983.. cfunction:: int PyList_Check(PyObject *p)
1984
1985 Return true if *p* is a list object or an instance of a subtype of the list
1986 type.
1987
Georg Brandl116aa622007-08-15 14:28:22 +00001988
1989.. cfunction:: int PyList_CheckExact(PyObject *p)
1990
1991 Return true if *p* is a list object, but not an instance of a subtype of the
1992 list type.
1993
Georg Brandl116aa622007-08-15 14:28:22 +00001994
1995.. cfunction:: PyObject* PyList_New(Py_ssize_t len)
1996
1997 Return a new list of length *len* on success, or *NULL* on failure.
1998
1999 .. note::
2000
2001 If *length* is greater than zero, the returned list object's items are set to
2002 ``NULL``. Thus you cannot use abstract API functions such as
2003 :cfunc:`PySequence_SetItem` or expose the object to Python code before setting
2004 all items to a real object with :cfunc:`PyList_SetItem`.
2005
2006
2007.. cfunction:: Py_ssize_t PyList_Size(PyObject *list)
2008
2009 .. index:: builtin: len
2010
2011 Return the length of the list object in *list*; this is equivalent to
2012 ``len(list)`` on a list object.
2013
2014
2015.. cfunction:: Py_ssize_t PyList_GET_SIZE(PyObject *list)
2016
2017 Macro form of :cfunc:`PyList_Size` without error checking.
2018
2019
2020.. cfunction:: PyObject* PyList_GetItem(PyObject *list, Py_ssize_t index)
2021
2022 Return the object at position *pos* in the list pointed to by *p*. The position
2023 must be positive, indexing from the end of the list is not supported. If *pos*
2024 is out of bounds, return *NULL* and set an :exc:`IndexError` exception.
2025
2026
2027.. cfunction:: PyObject* PyList_GET_ITEM(PyObject *list, Py_ssize_t i)
2028
2029 Macro form of :cfunc:`PyList_GetItem` without error checking.
2030
2031
2032.. cfunction:: int PyList_SetItem(PyObject *list, Py_ssize_t index, PyObject *item)
2033
2034 Set the item at index *index* in list to *item*. Return ``0`` on success or
2035 ``-1`` on failure.
2036
2037 .. note::
2038
2039 This function "steals" a reference to *item* and discards a reference to an item
2040 already in the list at the affected position.
2041
2042
2043.. cfunction:: void PyList_SET_ITEM(PyObject *list, Py_ssize_t i, PyObject *o)
2044
2045 Macro form of :cfunc:`PyList_SetItem` without error checking. This is normally
2046 only used to fill in new lists where there is no previous content.
2047
2048 .. note::
2049
2050 This function "steals" a reference to *item*, and, unlike
2051 :cfunc:`PyList_SetItem`, does *not* discard a reference to any item that it
2052 being replaced; any reference in *list* at position *i* will be leaked.
2053
2054
2055.. cfunction:: int PyList_Insert(PyObject *list, Py_ssize_t index, PyObject *item)
2056
2057 Insert the item *item* into list *list* in front of index *index*. Return ``0``
2058 if successful; return ``-1`` and set an exception if unsuccessful. Analogous to
2059 ``list.insert(index, item)``.
2060
2061
2062.. cfunction:: int PyList_Append(PyObject *list, PyObject *item)
2063
2064 Append the object *item* at the end of list *list*. Return ``0`` if successful;
2065 return ``-1`` and set an exception if unsuccessful. Analogous to
2066 ``list.append(item)``.
2067
2068
2069.. cfunction:: PyObject* PyList_GetSlice(PyObject *list, Py_ssize_t low, Py_ssize_t high)
2070
2071 Return a list of the objects in *list* containing the objects *between* *low*
2072 and *high*. Return *NULL* and set an exception if unsuccessful. Analogous to
2073 ``list[low:high]``.
2074
2075
2076.. cfunction:: int PyList_SetSlice(PyObject *list, Py_ssize_t low, Py_ssize_t high, PyObject *itemlist)
2077
2078 Set the slice of *list* between *low* and *high* to the contents of *itemlist*.
2079 Analogous to ``list[low:high] = itemlist``. The *itemlist* may be *NULL*,
2080 indicating the assignment of an empty list (slice deletion). Return ``0`` on
2081 success, ``-1`` on failure.
2082
2083
2084.. cfunction:: int PyList_Sort(PyObject *list)
2085
2086 Sort the items of *list* in place. Return ``0`` on success, ``-1`` on failure.
2087 This is equivalent to ``list.sort()``.
2088
2089
2090.. cfunction:: int PyList_Reverse(PyObject *list)
2091
2092 Reverse the items of *list* in place. Return ``0`` on success, ``-1`` on
2093 failure. This is the equivalent of ``list.reverse()``.
2094
2095
2096.. cfunction:: PyObject* PyList_AsTuple(PyObject *list)
2097
2098 .. index:: builtin: tuple
2099
2100 Return a new tuple object containing the contents of *list*; equivalent to
2101 ``tuple(list)``.
2102
2103
2104.. _mapobjects:
2105
2106Mapping Objects
2107===============
2108
2109.. index:: object: mapping
2110
2111
2112.. _dictobjects:
2113
2114Dictionary Objects
2115------------------
2116
2117.. index:: object: dictionary
2118
2119
2120.. ctype:: PyDictObject
2121
2122 This subtype of :ctype:`PyObject` represents a Python dictionary object.
2123
2124
2125.. cvar:: PyTypeObject PyDict_Type
2126
2127 .. index::
2128 single: DictType (in module types)
2129 single: DictionaryType (in module types)
2130
2131 This instance of :ctype:`PyTypeObject` represents the Python dictionary type.
2132 This is exposed to Python programs as ``dict`` and ``types.DictType``.
2133
2134
2135.. cfunction:: int PyDict_Check(PyObject *p)
2136
2137 Return true if *p* is a dict object or an instance of a subtype of the dict
2138 type.
2139
Georg Brandl116aa622007-08-15 14:28:22 +00002140
2141.. cfunction:: int PyDict_CheckExact(PyObject *p)
2142
2143 Return true if *p* is a dict object, but not an instance of a subtype of the
2144 dict type.
2145
Georg Brandl116aa622007-08-15 14:28:22 +00002146
2147.. cfunction:: PyObject* PyDict_New()
2148
2149 Return a new empty dictionary, or *NULL* on failure.
2150
2151
2152.. cfunction:: PyObject* PyDictProxy_New(PyObject *dict)
2153
2154 Return a proxy object for a mapping which enforces read-only behavior. This is
2155 normally used to create a proxy to prevent modification of the dictionary for
2156 non-dynamic class types.
2157
Georg Brandl116aa622007-08-15 14:28:22 +00002158
2159.. cfunction:: void PyDict_Clear(PyObject *p)
2160
2161 Empty an existing dictionary of all key-value pairs.
2162
2163
2164.. cfunction:: int PyDict_Contains(PyObject *p, PyObject *key)
2165
2166 Determine if dictionary *p* contains *key*. If an item in *p* is matches *key*,
2167 return ``1``, otherwise return ``0``. On error, return ``-1``. This is
2168 equivalent to the Python expression ``key in p``.
2169
Georg Brandl116aa622007-08-15 14:28:22 +00002170
2171.. cfunction:: PyObject* PyDict_Copy(PyObject *p)
2172
2173 Return a new dictionary that contains the same key-value pairs as *p*.
2174
Georg Brandl116aa622007-08-15 14:28:22 +00002175
2176.. cfunction:: int PyDict_SetItem(PyObject *p, PyObject *key, PyObject *val)
2177
2178 Insert *value* into the dictionary *p* with a key of *key*. *key* must be
Guido van Rossum2cc30da2007-11-02 23:46:40 +00002179 :term:`hashable`; if it isn't, :exc:`TypeError` will be raised. Return ``0``
2180 on success or ``-1`` on failure.
Georg Brandl116aa622007-08-15 14:28:22 +00002181
2182
2183.. cfunction:: int PyDict_SetItemString(PyObject *p, const char *key, PyObject *val)
2184
2185 .. index:: single: PyString_FromString()
2186
2187 Insert *value* into the dictionary *p* using *key* as a key. *key* should be a
2188 :ctype:`char\*`. The key object is created using ``PyString_FromString(key)``.
2189 Return ``0`` on success or ``-1`` on failure.
2190
2191
2192.. cfunction:: int PyDict_DelItem(PyObject *p, PyObject *key)
2193
2194 Remove the entry in dictionary *p* with key *key*. *key* must be hashable; if it
2195 isn't, :exc:`TypeError` is raised. Return ``0`` on success or ``-1`` on
2196 failure.
2197
2198
2199.. cfunction:: int PyDict_DelItemString(PyObject *p, char *key)
2200
2201 Remove the entry in dictionary *p* which has a key specified by the string
2202 *key*. Return ``0`` on success or ``-1`` on failure.
2203
2204
2205.. cfunction:: PyObject* PyDict_GetItem(PyObject *p, PyObject *key)
2206
2207 Return the object from dictionary *p* which has a key *key*. Return *NULL* if
2208 the key *key* is not present, but *without* setting an exception.
2209
2210
2211.. cfunction:: PyObject* PyDict_GetItemString(PyObject *p, const char *key)
2212
2213 This is the same as :cfunc:`PyDict_GetItem`, but *key* is specified as a
2214 :ctype:`char\*`, rather than a :ctype:`PyObject\*`.
2215
2216
2217.. cfunction:: PyObject* PyDict_Items(PyObject *p)
2218
2219 Return a :ctype:`PyListObject` containing all the items from the dictionary, as
2220 in the dictionary method :meth:`dict.items`.
2221
2222
2223.. cfunction:: PyObject* PyDict_Keys(PyObject *p)
2224
2225 Return a :ctype:`PyListObject` containing all the keys from the dictionary, as
2226 in the dictionary method :meth:`dict.keys`.
2227
2228
2229.. cfunction:: PyObject* PyDict_Values(PyObject *p)
2230
2231 Return a :ctype:`PyListObject` containing all the values from the dictionary
2232 *p*, as in the dictionary method :meth:`dict.values`.
2233
2234
2235.. cfunction:: Py_ssize_t PyDict_Size(PyObject *p)
2236
2237 .. index:: builtin: len
2238
2239 Return the number of items in the dictionary. This is equivalent to ``len(p)``
2240 on a dictionary.
2241
2242
2243.. cfunction:: int PyDict_Next(PyObject *p, Py_ssize_t *ppos, PyObject **pkey, PyObject **pvalue)
2244
2245 Iterate over all key-value pairs in the dictionary *p*. The :ctype:`int`
2246 referred to by *ppos* must be initialized to ``0`` prior to the first call to
2247 this function to start the iteration; the function returns true for each pair in
2248 the dictionary, and false once all pairs have been reported. The parameters
2249 *pkey* and *pvalue* should either point to :ctype:`PyObject\*` variables that
2250 will be filled in with each key and value, respectively, or may be *NULL*. Any
2251 references returned through them are borrowed. *ppos* should not be altered
2252 during iteration. Its value represents offsets within the internal dictionary
2253 structure, and since the structure is sparse, the offsets are not consecutive.
2254
2255 For example::
2256
2257 PyObject *key, *value;
2258 Py_ssize_t pos = 0;
2259
2260 while (PyDict_Next(self->dict, &pos, &key, &value)) {
2261 /* do something interesting with the values... */
2262 ...
2263 }
2264
2265 The dictionary *p* should not be mutated during iteration. It is safe (since
2266 Python 2.1) to modify the values of the keys as you iterate over the dictionary,
2267 but only so long as the set of keys does not change. For example::
2268
2269 PyObject *key, *value;
2270 Py_ssize_t pos = 0;
2271
2272 while (PyDict_Next(self->dict, &pos, &key, &value)) {
2273 int i = PyInt_AS_LONG(value) + 1;
2274 PyObject *o = PyInt_FromLong(i);
2275 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
2526.. _method-objects:
2527
2528Method Objects
2529--------------
2530
2531.. index:: object: method
2532
Christian Heimes05a2fc22007-11-30 22:29:24 +00002533Methods are bound function objects. Methods are always bound to an instance of
2534an user-defined class. Unbound methods (methods bound to a class object) are
2535no longer available.
Georg Brandl116aa622007-08-15 14:28:22 +00002536
2537
2538.. cvar:: PyTypeObject PyMethod_Type
2539
2540 .. index:: single: MethodType (in module types)
2541
2542 This instance of :ctype:`PyTypeObject` represents the Python method type. This
2543 is exposed to Python programs as ``types.MethodType``.
2544
2545
2546.. cfunction:: int PyMethod_Check(PyObject *o)
2547
2548 Return true if *o* is a method object (has type :cdata:`PyMethod_Type`). The
2549 parameter must not be *NULL*.
2550
2551
Christian Heimes05a2fc22007-11-30 22:29:24 +00002552.. cfunction:: PyObject* PyMethod_New(PyObject *func, PyObject *self)
Georg Brandl116aa622007-08-15 14:28:22 +00002553
Christian Heimes05a2fc22007-11-30 22:29:24 +00002554 Return a new method object, with *func* being any callable object and *self*
2555 the instance the method should be bound. *func* is is the function that will
2556 be called when the method is called. *self* must not be *NULL*.
Georg Brandl116aa622007-08-15 14:28:22 +00002557
2558
2559.. cfunction:: PyObject* PyMethod_Function(PyObject *meth)
2560
2561 Return the function object associated with the method *meth*.
2562
2563
2564.. cfunction:: PyObject* PyMethod_GET_FUNCTION(PyObject *meth)
2565
2566 Macro version of :cfunc:`PyMethod_Function` which avoids error checking.
2567
2568
2569.. cfunction:: PyObject* PyMethod_Self(PyObject *meth)
2570
Christian Heimes05a2fc22007-11-30 22:29:24 +00002571 Return the instance associated with the method *meth*.
Georg Brandl116aa622007-08-15 14:28:22 +00002572
2573
2574.. cfunction:: PyObject* PyMethod_GET_SELF(PyObject *meth)
2575
2576 Macro version of :cfunc:`PyMethod_Self` which avoids error checking.
2577
2578
2579.. _moduleobjects:
2580
2581Module Objects
2582--------------
2583
2584.. index:: object: module
2585
2586There are only a few functions special to module objects.
2587
2588
2589.. cvar:: PyTypeObject PyModule_Type
2590
2591 .. index:: single: ModuleType (in module types)
2592
2593 This instance of :ctype:`PyTypeObject` represents the Python module type. This
2594 is exposed to Python programs as ``types.ModuleType``.
2595
2596
2597.. cfunction:: int PyModule_Check(PyObject *p)
2598
2599 Return true if *p* is a module object, or a subtype of a module object.
2600
Georg Brandl116aa622007-08-15 14:28:22 +00002601
2602.. cfunction:: int PyModule_CheckExact(PyObject *p)
2603
2604 Return true if *p* is a module object, but not a subtype of
2605 :cdata:`PyModule_Type`.
2606
Georg Brandl116aa622007-08-15 14:28:22 +00002607
2608.. cfunction:: PyObject* PyModule_New(const char *name)
2609
2610 .. index::
2611 single: __name__ (module attribute)
2612 single: __doc__ (module attribute)
2613 single: __file__ (module attribute)
2614
2615 Return a new module object with the :attr:`__name__` attribute set to *name*.
2616 Only the module's :attr:`__doc__` and :attr:`__name__` attributes are filled in;
2617 the caller is responsible for providing a :attr:`__file__` attribute.
2618
2619
2620.. cfunction:: PyObject* PyModule_GetDict(PyObject *module)
2621
2622 .. index:: single: __dict__ (module attribute)
2623
2624 Return the dictionary object that implements *module*'s namespace; this object
2625 is the same as the :attr:`__dict__` attribute of the module object. This
2626 function never fails. It is recommended extensions use other
2627 :cfunc:`PyModule_\*` and :cfunc:`PyObject_\*` functions rather than directly
2628 manipulate a module's :attr:`__dict__`.
2629
2630
2631.. cfunction:: char* PyModule_GetName(PyObject *module)
2632
2633 .. index::
2634 single: __name__ (module attribute)
2635 single: SystemError (built-in exception)
2636
2637 Return *module*'s :attr:`__name__` value. If the module does not provide one,
2638 or if it is not a string, :exc:`SystemError` is raised and *NULL* is returned.
2639
2640
2641.. cfunction:: char* PyModule_GetFilename(PyObject *module)
2642
2643 .. index::
2644 single: __file__ (module attribute)
2645 single: SystemError (built-in exception)
2646
2647 Return the name of the file from which *module* was loaded using *module*'s
2648 :attr:`__file__` attribute. If this is not defined, or if it is not a string,
2649 raise :exc:`SystemError` and return *NULL*.
2650
2651
2652.. cfunction:: int PyModule_AddObject(PyObject *module, const char *name, PyObject *value)
2653
2654 Add an object to *module* as *name*. This is a convenience function which can
2655 be used from the module's initialization function. This steals a reference to
2656 *value*. Return ``-1`` on error, ``0`` on success.
2657
Georg Brandl116aa622007-08-15 14:28:22 +00002658
2659.. cfunction:: int PyModule_AddIntConstant(PyObject *module, const char *name, long value)
2660
2661 Add an integer constant to *module* as *name*. This convenience function can be
2662 used from the module's initialization function. Return ``-1`` on error, ``0`` on
2663 success.
2664
Georg Brandl116aa622007-08-15 14:28:22 +00002665
2666.. cfunction:: int PyModule_AddStringConstant(PyObject *module, const char *name, const char *value)
2667
2668 Add a string constant to *module* as *name*. This convenience function can be
2669 used from the module's initialization function. The string *value* must be
2670 null-terminated. Return ``-1`` on error, ``0`` on success.
2671
Georg Brandl116aa622007-08-15 14:28:22 +00002672
2673.. _iterator-objects:
2674
2675Iterator Objects
2676----------------
2677
2678Python provides two general-purpose iterator objects. The first, a sequence
2679iterator, works with an arbitrary sequence supporting the :meth:`__getitem__`
2680method. The second works with a callable object and a sentinel value, calling
2681the callable for each item in the sequence, and ending the iteration when the
2682sentinel value is returned.
2683
2684
2685.. cvar:: PyTypeObject PySeqIter_Type
2686
2687 Type object for iterator objects returned by :cfunc:`PySeqIter_New` and the
2688 one-argument form of the :func:`iter` built-in function for built-in sequence
2689 types.
2690
Georg Brandl116aa622007-08-15 14:28:22 +00002691
2692.. cfunction:: int PySeqIter_Check(op)
2693
2694 Return true if the type of *op* is :cdata:`PySeqIter_Type`.
2695
Georg Brandl116aa622007-08-15 14:28:22 +00002696
2697.. cfunction:: PyObject* PySeqIter_New(PyObject *seq)
2698
2699 Return an iterator that works with a general sequence object, *seq*. The
2700 iteration ends when the sequence raises :exc:`IndexError` for the subscripting
2701 operation.
2702
Georg Brandl116aa622007-08-15 14:28:22 +00002703
2704.. cvar:: PyTypeObject PyCallIter_Type
2705
2706 Type object for iterator objects returned by :cfunc:`PyCallIter_New` and the
2707 two-argument form of the :func:`iter` built-in function.
2708
Georg Brandl116aa622007-08-15 14:28:22 +00002709
2710.. cfunction:: int PyCallIter_Check(op)
2711
2712 Return true if the type of *op* is :cdata:`PyCallIter_Type`.
2713
Georg Brandl116aa622007-08-15 14:28:22 +00002714
2715.. cfunction:: PyObject* PyCallIter_New(PyObject *callable, PyObject *sentinel)
2716
2717 Return a new iterator. The first parameter, *callable*, can be any Python
2718 callable object that can be called with no parameters; each call to it should
2719 return the next item in the iteration. When *callable* returns a value equal to
2720 *sentinel*, the iteration will be terminated.
2721
Georg Brandl116aa622007-08-15 14:28:22 +00002722
2723.. _descriptor-objects:
2724
2725Descriptor Objects
2726------------------
2727
2728"Descriptors" are objects that describe some attribute of an object. They are
2729found in the dictionary of type objects.
2730
Georg Brandl321976b2007-09-01 12:33:24 +00002731.. XXX document these!
Georg Brandl116aa622007-08-15 14:28:22 +00002732
2733.. cvar:: PyTypeObject PyProperty_Type
2734
2735 The type object for the built-in descriptor types.
2736
Georg Brandl116aa622007-08-15 14:28:22 +00002737
2738.. cfunction:: PyObject* PyDescr_NewGetSet(PyTypeObject *type, struct PyGetSetDef *getset)
2739
Georg Brandl116aa622007-08-15 14:28:22 +00002740
2741.. cfunction:: PyObject* PyDescr_NewMember(PyTypeObject *type, struct PyMemberDef *meth)
2742
Georg Brandl116aa622007-08-15 14:28:22 +00002743
2744.. cfunction:: PyObject* PyDescr_NewMethod(PyTypeObject *type, struct PyMethodDef *meth)
2745
Georg Brandl116aa622007-08-15 14:28:22 +00002746
2747.. cfunction:: PyObject* PyDescr_NewWrapper(PyTypeObject *type, struct wrapperbase *wrapper, void *wrapped)
2748
Georg Brandl116aa622007-08-15 14:28:22 +00002749
2750.. cfunction:: PyObject* PyDescr_NewClassMethod(PyTypeObject *type, PyMethodDef *method)
2751
Georg Brandl116aa622007-08-15 14:28:22 +00002752
2753.. cfunction:: int PyDescr_IsData(PyObject *descr)
2754
2755 Return true if the descriptor objects *descr* describes a data attribute, or
2756 false if it describes a method. *descr* must be a descriptor object; there is
2757 no error checking.
2758
Georg Brandl116aa622007-08-15 14:28:22 +00002759
2760.. cfunction:: PyObject* PyWrapper_New(PyObject *, PyObject *)
2761
Georg Brandl116aa622007-08-15 14:28:22 +00002762
2763.. _slice-objects:
2764
2765Slice Objects
2766-------------
2767
2768
2769.. cvar:: PyTypeObject PySlice_Type
2770
2771 .. index:: single: SliceType (in module types)
2772
2773 The type object for slice objects. This is the same as ``slice`` and
2774 ``types.SliceType``.
2775
2776
2777.. cfunction:: int PySlice_Check(PyObject *ob)
2778
2779 Return true if *ob* is a slice object; *ob* must not be *NULL*.
2780
2781
2782.. cfunction:: PyObject* PySlice_New(PyObject *start, PyObject *stop, PyObject *step)
2783
2784 Return a new slice object with the given values. The *start*, *stop*, and
2785 *step* parameters are used as the values of the slice object attributes of the
2786 same names. Any of the values may be *NULL*, in which case the ``None`` will be
2787 used for the corresponding attribute. Return *NULL* if the new object could not
2788 be allocated.
2789
2790
2791.. cfunction:: int PySlice_GetIndices(PySliceObject *slice, Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)
2792
2793 Retrieve the start, stop and step indices from the slice object *slice*,
2794 assuming a sequence of length *length*. Treats indices greater than *length* as
2795 errors.
2796
2797 Returns 0 on success and -1 on error with no exception set (unless one of the
2798 indices was not :const:`None` and failed to be converted to an integer, in which
2799 case -1 is returned with an exception set).
2800
2801 You probably do not want to use this function. If you want to use slice objects
2802 in versions of Python prior to 2.3, you would probably do well to incorporate
2803 the source of :cfunc:`PySlice_GetIndicesEx`, suitably renamed, in the source of
2804 your extension.
2805
2806
2807.. 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)
2808
2809 Usable replacement for :cfunc:`PySlice_GetIndices`. Retrieve the start, stop,
2810 and step indices from the slice object *slice* assuming a sequence of length
2811 *length*, and store the length of the slice in *slicelength*. Out of bounds
2812 indices are clipped in a manner consistent with the handling of normal slices.
2813
2814 Returns 0 on success and -1 on error with exception set.
2815
Georg Brandl116aa622007-08-15 14:28:22 +00002816
2817.. _weakrefobjects:
2818
2819Weak Reference Objects
2820----------------------
2821
2822Python supports *weak references* as first-class objects. There are two
2823specific object types which directly implement weak references. The first is a
2824simple reference object, and the second acts as a proxy for the original object
2825as much as it can.
2826
2827
2828.. cfunction:: int PyWeakref_Check(ob)
2829
2830 Return true if *ob* is either a reference or proxy object.
2831
Georg Brandl116aa622007-08-15 14:28:22 +00002832
2833.. cfunction:: int PyWeakref_CheckRef(ob)
2834
2835 Return true if *ob* is a reference object.
2836
Georg Brandl116aa622007-08-15 14:28:22 +00002837
2838.. cfunction:: int PyWeakref_CheckProxy(ob)
2839
2840 Return true if *ob* is a proxy object.
2841
Georg Brandl116aa622007-08-15 14:28:22 +00002842
2843.. cfunction:: PyObject* PyWeakref_NewRef(PyObject *ob, PyObject *callback)
2844
2845 Return a weak reference object for the object *ob*. This will always return
2846 a new reference, but is not guaranteed to create a new object; an existing
2847 reference object may be returned. The second parameter, *callback*, can be a
2848 callable object that receives notification when *ob* is garbage collected; it
2849 should accept a single parameter, which will be the weak reference object
2850 itself. *callback* may also be ``None`` or *NULL*. If *ob* is not a
2851 weakly-referencable object, or if *callback* is not callable, ``None``, or
2852 *NULL*, this will return *NULL* and raise :exc:`TypeError`.
2853
Georg Brandl116aa622007-08-15 14:28:22 +00002854
2855.. cfunction:: PyObject* PyWeakref_NewProxy(PyObject *ob, PyObject *callback)
2856
2857 Return a weak reference proxy object for the object *ob*. This will always
2858 return a new reference, but is not guaranteed to create a new object; an
2859 existing proxy object may be returned. The second parameter, *callback*, can
2860 be a callable object that receives notification when *ob* is garbage
2861 collected; it should accept a single parameter, which will be the weak
2862 reference object itself. *callback* may also be ``None`` or *NULL*. If *ob*
2863 is not a weakly-referencable object, or if *callback* is not callable,
2864 ``None``, or *NULL*, this will return *NULL* and raise :exc:`TypeError`.
2865
Georg Brandl116aa622007-08-15 14:28:22 +00002866
2867.. cfunction:: PyObject* PyWeakref_GetObject(PyObject *ref)
2868
2869 Return the referenced object from a weak reference, *ref*. If the referent is
2870 no longer live, returns ``None``.
2871
Georg Brandl116aa622007-08-15 14:28:22 +00002872
2873.. cfunction:: PyObject* PyWeakref_GET_OBJECT(PyObject *ref)
2874
2875 Similar to :cfunc:`PyWeakref_GetObject`, but implemented as a macro that does no
2876 error checking.
2877
Georg Brandl116aa622007-08-15 14:28:22 +00002878
2879.. _cobjects:
2880
2881CObjects
2882--------
2883
2884.. index:: object: CObject
2885
2886Refer to *Extending and Embedding the Python Interpreter*, section 1.12,
2887"Providing a C API for an Extension Module," for more information on using these
2888objects.
2889
2890
2891.. ctype:: PyCObject
2892
2893 This subtype of :ctype:`PyObject` represents an opaque value, useful for C
2894 extension modules who need to pass an opaque value (as a :ctype:`void\*`
2895 pointer) through Python code to other C code. It is often used to make a C
2896 function pointer defined in one module available to other modules, so the
2897 regular import mechanism can be used to access C APIs defined in dynamically
2898 loaded modules.
2899
2900
2901.. cfunction:: int PyCObject_Check(PyObject *p)
2902
2903 Return true if its argument is a :ctype:`PyCObject`.
2904
2905
2906.. cfunction:: PyObject* PyCObject_FromVoidPtr(void* cobj, void (*destr)(void *))
2907
2908 Create a :ctype:`PyCObject` from the ``void *`` *cobj*. The *destr* function
2909 will be called when the object is reclaimed, unless it is *NULL*.
2910
2911
2912.. cfunction:: PyObject* PyCObject_FromVoidPtrAndDesc(void* cobj, void* desc, void (*destr)(void *, void *))
2913
2914 Create a :ctype:`PyCObject` from the :ctype:`void \*` *cobj*. The *destr*
2915 function will be called when the object is reclaimed. The *desc* argument can
2916 be used to pass extra callback data for the destructor function.
2917
2918
2919.. cfunction:: void* PyCObject_AsVoidPtr(PyObject* self)
2920
2921 Return the object :ctype:`void \*` that the :ctype:`PyCObject` *self* was
2922 created with.
2923
2924
2925.. cfunction:: void* PyCObject_GetDesc(PyObject* self)
2926
2927 Return the description :ctype:`void \*` that the :ctype:`PyCObject` *self* was
2928 created with.
2929
2930
2931.. cfunction:: int PyCObject_SetVoidPtr(PyObject* self, void* cobj)
2932
2933 Set the void pointer inside *self* to *cobj*. The :ctype:`PyCObject` must not
2934 have an associated destructor. Return true on success, false on failure.
2935
2936
2937.. _cell-objects:
2938
2939Cell Objects
2940------------
2941
2942"Cell" objects are used to implement variables referenced by multiple scopes.
2943For each such variable, a cell object is created to store the value; the local
2944variables of each stack frame that references the value contains a reference to
2945the cells from outer scopes which also use that variable. When the value is
2946accessed, the value contained in the cell is used instead of the cell object
2947itself. This de-referencing of the cell object requires support from the
2948generated byte-code; these are not automatically de-referenced when accessed.
2949Cell objects are not likely to be useful elsewhere.
2950
2951
2952.. ctype:: PyCellObject
2953
2954 The C structure used for cell objects.
2955
2956
2957.. cvar:: PyTypeObject PyCell_Type
2958
2959 The type object corresponding to cell objects.
2960
2961
2962.. cfunction:: int PyCell_Check(ob)
2963
2964 Return true if *ob* is a cell object; *ob* must not be *NULL*.
2965
2966
2967.. cfunction:: PyObject* PyCell_New(PyObject *ob)
2968
2969 Create and return a new cell object containing the value *ob*. The parameter may
2970 be *NULL*.
2971
2972
2973.. cfunction:: PyObject* PyCell_Get(PyObject *cell)
2974
2975 Return the contents of the cell *cell*.
2976
2977
2978.. cfunction:: PyObject* PyCell_GET(PyObject *cell)
2979
2980 Return the contents of the cell *cell*, but without checking that *cell* is
2981 non-*NULL* and a cell object.
2982
2983
2984.. cfunction:: int PyCell_Set(PyObject *cell, PyObject *value)
2985
2986 Set the contents of the cell object *cell* to *value*. This releases the
2987 reference to any current content of the cell. *value* may be *NULL*. *cell*
2988 must be non-*NULL*; if it is not a cell object, ``-1`` will be returned. On
2989 success, ``0`` will be returned.
2990
2991
2992.. cfunction:: void PyCell_SET(PyObject *cell, PyObject *value)
2993
2994 Sets the value of the cell object *cell* to *value*. No reference counts are
2995 adjusted, and no checks are made for safety; *cell* must be non-*NULL* and must
2996 be a cell object.
2997
2998
2999.. _gen-objects:
3000
3001Generator Objects
3002-----------------
3003
3004Generator objects are what Python uses to implement generator iterators. They
3005are normally created by iterating over a function that yields values, rather
3006than explicitly calling :cfunc:`PyGen_New`.
3007
3008
3009.. ctype:: PyGenObject
3010
3011 The C structure used for generator objects.
3012
3013
3014.. cvar:: PyTypeObject PyGen_Type
3015
3016 The type object corresponding to generator objects
3017
3018
3019.. cfunction:: int PyGen_Check(ob)
3020
3021 Return true if *ob* is a generator object; *ob* must not be *NULL*.
3022
3023
3024.. cfunction:: int PyGen_CheckExact(ob)
3025
3026 Return true if *ob*'s type is *PyGen_Type* is a generator object; *ob* must not
3027 be *NULL*.
3028
3029
3030.. cfunction:: PyObject* PyGen_New(PyFrameObject *frame)
3031
3032 Create and return a new generator object based on the *frame* object. A
3033 reference to *frame* is stolen by this function. The parameter must not be
3034 *NULL*.
3035
3036
3037.. _datetimeobjects:
3038
3039DateTime Objects
3040----------------
3041
3042Various date and time objects are supplied by the :mod:`datetime` module.
3043Before using any of these functions, the header file :file:`datetime.h` must be
3044included in your source (note that this is not included by :file:`Python.h`),
3045and the macro :cfunc:`PyDateTime_IMPORT` must be invoked. The macro puts a
3046pointer to a C structure into a static variable, ``PyDateTimeAPI``, that is
3047used by the following macros.
3048
3049Type-check macros:
3050
Georg Brandl116aa622007-08-15 14:28:22 +00003051.. cfunction:: int PyDate_Check(PyObject *ob)
3052
3053 Return true if *ob* is of type :cdata:`PyDateTime_DateType` or a subtype of
3054 :cdata:`PyDateTime_DateType`. *ob* must not be *NULL*.
3055
Georg Brandl116aa622007-08-15 14:28:22 +00003056
3057.. cfunction:: int PyDate_CheckExact(PyObject *ob)
3058
3059 Return true if *ob* is of type :cdata:`PyDateTime_DateType`. *ob* must not be
3060 *NULL*.
3061
Georg Brandl116aa622007-08-15 14:28:22 +00003062
3063.. cfunction:: int PyDateTime_Check(PyObject *ob)
3064
3065 Return true if *ob* is of type :cdata:`PyDateTime_DateTimeType` or a subtype of
3066 :cdata:`PyDateTime_DateTimeType`. *ob* must not be *NULL*.
3067
Georg Brandl116aa622007-08-15 14:28:22 +00003068
3069.. cfunction:: int PyDateTime_CheckExact(PyObject *ob)
3070
3071 Return true if *ob* is of type :cdata:`PyDateTime_DateTimeType`. *ob* must not
3072 be *NULL*.
3073
Georg Brandl116aa622007-08-15 14:28:22 +00003074
3075.. cfunction:: int PyTime_Check(PyObject *ob)
3076
3077 Return true if *ob* is of type :cdata:`PyDateTime_TimeType` or a subtype of
3078 :cdata:`PyDateTime_TimeType`. *ob* must not be *NULL*.
3079
Georg Brandl116aa622007-08-15 14:28:22 +00003080
3081.. cfunction:: int PyTime_CheckExact(PyObject *ob)
3082
3083 Return true if *ob* is of type :cdata:`PyDateTime_TimeType`. *ob* must not be
3084 *NULL*.
3085
Georg Brandl116aa622007-08-15 14:28:22 +00003086
3087.. cfunction:: int PyDelta_Check(PyObject *ob)
3088
3089 Return true if *ob* is of type :cdata:`PyDateTime_DeltaType` or a subtype of
3090 :cdata:`PyDateTime_DeltaType`. *ob* must not be *NULL*.
3091
Georg Brandl116aa622007-08-15 14:28:22 +00003092
3093.. cfunction:: int PyDelta_CheckExact(PyObject *ob)
3094
3095 Return true if *ob* is of type :cdata:`PyDateTime_DeltaType`. *ob* must not be
3096 *NULL*.
3097
Georg Brandl116aa622007-08-15 14:28:22 +00003098
3099.. cfunction:: int PyTZInfo_Check(PyObject *ob)
3100
3101 Return true if *ob* is of type :cdata:`PyDateTime_TZInfoType` or a subtype of
3102 :cdata:`PyDateTime_TZInfoType`. *ob* must not be *NULL*.
3103
Georg Brandl116aa622007-08-15 14:28:22 +00003104
3105.. cfunction:: int PyTZInfo_CheckExact(PyObject *ob)
3106
3107 Return true if *ob* is of type :cdata:`PyDateTime_TZInfoType`. *ob* must not be
3108 *NULL*.
3109
Georg Brandl116aa622007-08-15 14:28:22 +00003110
3111Macros to create objects:
3112
Georg Brandl116aa622007-08-15 14:28:22 +00003113.. cfunction:: PyObject* PyDate_FromDate(int year, int month, int day)
3114
3115 Return a ``datetime.date`` object with the specified year, month and day.
3116
Georg Brandl116aa622007-08-15 14:28:22 +00003117
3118.. cfunction:: PyObject* PyDateTime_FromDateAndTime(int year, int month, int day, int hour, int minute, int second, int usecond)
3119
3120 Return a ``datetime.datetime`` object with the specified year, month, day, hour,
3121 minute, second and microsecond.
3122
Georg Brandl116aa622007-08-15 14:28:22 +00003123
3124.. cfunction:: PyObject* PyTime_FromTime(int hour, int minute, int second, int usecond)
3125
3126 Return a ``datetime.time`` object with the specified hour, minute, second and
3127 microsecond.
3128
Georg Brandl116aa622007-08-15 14:28:22 +00003129
3130.. cfunction:: PyObject* PyDelta_FromDSU(int days, int seconds, int useconds)
3131
3132 Return a ``datetime.timedelta`` object representing the given number of days,
3133 seconds and microseconds. Normalization is performed so that the resulting
3134 number of microseconds and seconds lie in the ranges documented for
3135 ``datetime.timedelta`` objects.
3136
Georg Brandl116aa622007-08-15 14:28:22 +00003137
3138Macros to extract fields from date objects. The argument must be an instance of
3139:cdata:`PyDateTime_Date`, including subclasses (such as
3140:cdata:`PyDateTime_DateTime`). The argument must not be *NULL*, and the type is
3141not checked:
3142
Georg Brandl116aa622007-08-15 14:28:22 +00003143.. cfunction:: int PyDateTime_GET_YEAR(PyDateTime_Date *o)
3144
3145 Return the year, as a positive int.
3146
Georg Brandl116aa622007-08-15 14:28:22 +00003147
3148.. cfunction:: int PyDateTime_GET_MONTH(PyDateTime_Date *o)
3149
3150 Return the month, as an int from 1 through 12.
3151
Georg Brandl116aa622007-08-15 14:28:22 +00003152
3153.. cfunction:: int PyDateTime_GET_DAY(PyDateTime_Date *o)
3154
3155 Return the day, as an int from 1 through 31.
3156
Georg Brandl116aa622007-08-15 14:28:22 +00003157
3158Macros to extract fields from datetime objects. The argument must be an
3159instance of :cdata:`PyDateTime_DateTime`, including subclasses. The argument
3160must not be *NULL*, and the type is not checked:
3161
Georg Brandl116aa622007-08-15 14:28:22 +00003162.. cfunction:: int PyDateTime_DATE_GET_HOUR(PyDateTime_DateTime *o)
3163
3164 Return the hour, as an int from 0 through 23.
3165
Georg Brandl116aa622007-08-15 14:28:22 +00003166
3167.. cfunction:: int PyDateTime_DATE_GET_MINUTE(PyDateTime_DateTime *o)
3168
3169 Return the minute, as an int from 0 through 59.
3170
Georg Brandl116aa622007-08-15 14:28:22 +00003171
3172.. cfunction:: int PyDateTime_DATE_GET_SECOND(PyDateTime_DateTime *o)
3173
3174 Return the second, as an int from 0 through 59.
3175
Georg Brandl116aa622007-08-15 14:28:22 +00003176
3177.. cfunction:: int PyDateTime_DATE_GET_MICROSECOND(PyDateTime_DateTime *o)
3178
3179 Return the microsecond, as an int from 0 through 999999.
3180
Georg Brandl116aa622007-08-15 14:28:22 +00003181
3182Macros to extract fields from time objects. The argument must be an instance of
3183:cdata:`PyDateTime_Time`, including subclasses. The argument must not be *NULL*,
3184and the type is not checked:
3185
Georg Brandl116aa622007-08-15 14:28:22 +00003186.. cfunction:: int PyDateTime_TIME_GET_HOUR(PyDateTime_Time *o)
3187
3188 Return the hour, as an int from 0 through 23.
3189
Georg Brandl116aa622007-08-15 14:28:22 +00003190
3191.. cfunction:: int PyDateTime_TIME_GET_MINUTE(PyDateTime_Time *o)
3192
3193 Return the minute, as an int from 0 through 59.
3194
Georg Brandl116aa622007-08-15 14:28:22 +00003195
3196.. cfunction:: int PyDateTime_TIME_GET_SECOND(PyDateTime_Time *o)
3197
3198 Return the second, as an int from 0 through 59.
3199
Georg Brandl116aa622007-08-15 14:28:22 +00003200
3201.. cfunction:: int PyDateTime_TIME_GET_MICROSECOND(PyDateTime_Time *o)
3202
3203 Return the microsecond, as an int from 0 through 999999.
3204
Georg Brandl116aa622007-08-15 14:28:22 +00003205
3206Macros for the convenience of modules implementing the DB API:
3207
Georg Brandl116aa622007-08-15 14:28:22 +00003208.. cfunction:: PyObject* PyDateTime_FromTimestamp(PyObject *args)
3209
3210 Create and return a new ``datetime.datetime`` object given an argument tuple
3211 suitable for passing to ``datetime.datetime.fromtimestamp()``.
3212
Georg Brandl116aa622007-08-15 14:28:22 +00003213
3214.. cfunction:: PyObject* PyDate_FromTimestamp(PyObject *args)
3215
3216 Create and return a new ``datetime.date`` object given an argument tuple
3217 suitable for passing to ``datetime.date.fromtimestamp()``.
3218
Georg Brandl116aa622007-08-15 14:28:22 +00003219
3220.. _setobjects:
3221
3222Set Objects
3223-----------
3224
3225.. sectionauthor:: Raymond D. Hettinger <python@rcn.com>
3226
3227
3228.. index::
3229 object: set
3230 object: frozenset
3231
Georg Brandl116aa622007-08-15 14:28:22 +00003232This section details the public API for :class:`set` and :class:`frozenset`
3233objects. Any functionality not listed below is best accessed using the either
3234the abstract object protocol (including :cfunc:`PyObject_CallMethod`,
3235:cfunc:`PyObject_RichCompareBool`, :cfunc:`PyObject_Hash`,
3236:cfunc:`PyObject_Repr`, :cfunc:`PyObject_IsTrue`, :cfunc:`PyObject_Print`, and
3237:cfunc:`PyObject_GetIter`) or the abstract number protocol (including
3238:cfunc:`PyNumber_And`, :cfunc:`PyNumber_Subtract`, :cfunc:`PyNumber_Or`,
3239:cfunc:`PyNumber_Xor`, :cfunc:`PyNumber_InPlaceAnd`,
3240:cfunc:`PyNumber_InPlaceSubtract`, :cfunc:`PyNumber_InPlaceOr`, and
3241:cfunc:`PyNumber_InPlaceXor`).
3242
3243
3244.. ctype:: PySetObject
3245
3246 This subtype of :ctype:`PyObject` is used to hold the internal data for both
3247 :class:`set` and :class:`frozenset` objects. It is like a :ctype:`PyDictObject`
3248 in that it is a fixed size for small sets (much like tuple storage) and will
3249 point to a separate, variable sized block of memory for medium and large sized
3250 sets (much like list storage). None of the fields of this structure should be
3251 considered public and are subject to change. All access should be done through
3252 the documented API rather than by manipulating the values in the structure.
3253
3254
3255.. cvar:: PyTypeObject PySet_Type
3256
3257 This is an instance of :ctype:`PyTypeObject` representing the Python
3258 :class:`set` type.
3259
3260
3261.. cvar:: PyTypeObject PyFrozenSet_Type
3262
3263 This is an instance of :ctype:`PyTypeObject` representing the Python
3264 :class:`frozenset` type.
3265
3266The following type check macros work on pointers to any Python object. Likewise,
3267the constructor functions work with any iterable Python object.
3268
3269
3270.. cfunction:: int PyAnySet_Check(PyObject *p)
3271
3272 Return true if *p* is a :class:`set` object, a :class:`frozenset` object, or an
3273 instance of a subtype.
3274
3275
3276.. cfunction:: int PyAnySet_CheckExact(PyObject *p)
3277
3278 Return true if *p* is a :class:`set` object or a :class:`frozenset` object but
3279 not an instance of a subtype.
3280
3281
3282.. cfunction:: int PyFrozenSet_CheckExact(PyObject *p)
3283
3284 Return true if *p* is a :class:`frozenset` object but not an instance of a
3285 subtype.
3286
3287
3288.. cfunction:: PyObject* PySet_New(PyObject *iterable)
3289
3290 Return a new :class:`set` containing objects returned by the *iterable*. The
3291 *iterable* may be *NULL* to create a new empty set. Return the new set on
3292 success or *NULL* on failure. Raise :exc:`TypeError` if *iterable* is not
3293 actually iterable. The constructor is also useful for copying a set
3294 (``c=set(s)``).
3295
3296
3297.. cfunction:: PyObject* PyFrozenSet_New(PyObject *iterable)
3298
3299 Return a new :class:`frozenset` containing objects returned by the *iterable*.
3300 The *iterable* may be *NULL* to create a new empty frozenset. Return the new
3301 set on success or *NULL* on failure. Raise :exc:`TypeError` if *iterable* is
3302 not actually iterable.
3303
3304The following functions and macros are available for instances of :class:`set`
3305or :class:`frozenset` or instances of their subtypes.
3306
3307
Thomas Wouters1b7f8912007-09-19 03:06:30 +00003308.. cfunction:: Py_ssize_t PySet_Size(PyObject *anyset)
Georg Brandl116aa622007-08-15 14:28:22 +00003309
3310 .. index:: builtin: len
3311
3312 Return the length of a :class:`set` or :class:`frozenset` object. Equivalent to
3313 ``len(anyset)``. Raises a :exc:`PyExc_SystemError` if *anyset* is not a
3314 :class:`set`, :class:`frozenset`, or an instance of a subtype.
3315
3316
Thomas Wouters1b7f8912007-09-19 03:06:30 +00003317.. cfunction:: Py_ssize_t PySet_GET_SIZE(PyObject *anyset)
Georg Brandl116aa622007-08-15 14:28:22 +00003318
3319 Macro form of :cfunc:`PySet_Size` without error checking.
3320
3321
3322.. cfunction:: int PySet_Contains(PyObject *anyset, PyObject *key)
3323
3324 Return 1 if found, 0 if not found, and -1 if an error is encountered. Unlike
3325 the Python :meth:`__contains__` method, this function does not automatically
3326 convert unhashable sets into temporary frozensets. Raise a :exc:`TypeError` if
3327 the *key* is unhashable. Raise :exc:`PyExc_SystemError` if *anyset* is not a
3328 :class:`set`, :class:`frozenset`, or an instance of a subtype.
3329
3330The following functions are available for instances of :class:`set` or its
3331subtypes but not for instances of :class:`frozenset` or its subtypes.
3332
3333
3334.. cfunction:: int PySet_Add(PyObject *set, PyObject *key)
3335
3336 Add *key* to a :class:`set` instance. Does not apply to :class:`frozenset`
3337 instances. Return 0 on success or -1 on failure. Raise a :exc:`TypeError` if
3338 the *key* is unhashable. Raise a :exc:`MemoryError` if there is no room to grow.
3339 Raise a :exc:`SystemError` if *set* is an not an instance of :class:`set` or its
3340 subtype.
3341
3342
3343.. cfunction:: int PySet_Discard(PyObject *set, PyObject *key)
3344
3345 Return 1 if found and removed, 0 if not found (no action taken), and -1 if an
3346 error is encountered. Does not raise :exc:`KeyError` for missing keys. Raise a
3347 :exc:`TypeError` if the *key* is unhashable. Unlike the Python :meth:`discard`
3348 method, this function does not automatically convert unhashable sets into
3349 temporary frozensets. Raise :exc:`PyExc_SystemError` if *set* is an not an
3350 instance of :class:`set` or its subtype.
3351
3352
3353.. cfunction:: PyObject* PySet_Pop(PyObject *set)
3354
3355 Return a new reference to an arbitrary object in the *set*, and removes the
3356 object from the *set*. Return *NULL* on failure. Raise :exc:`KeyError` if the
3357 set is empty. Raise a :exc:`SystemError` if *set* is an not an instance of
3358 :class:`set` or its subtype.
3359
3360
3361.. cfunction:: int PySet_Clear(PyObject *set)
3362
3363 Empty an existing set of all elements.
3364