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