blob: 1e1fa0dccf15773d067b97c2a99c481e01d50d39 [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
2226 hashable; if it isn't, :exc:`TypeError` will be raised. Return ``0`` on success
2227 or ``-1`` on failure.
2228
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
2603 class which provides the unbound method..
2604
2605
2606.. cfunction:: PyObject* PyMethod_Class(PyObject *meth)
2607
2608 Return the class object from which the method *meth* was created; if this was
2609 created from an instance, it will be the class of the instance.
2610
2611
2612.. cfunction:: PyObject* PyMethod_GET_CLASS(PyObject *meth)
2613
2614 Macro version of :cfunc:`PyMethod_Class` which avoids error checking.
2615
2616
2617.. cfunction:: PyObject* PyMethod_Function(PyObject *meth)
2618
2619 Return the function object associated with the method *meth*.
2620
2621
2622.. cfunction:: PyObject* PyMethod_GET_FUNCTION(PyObject *meth)
2623
2624 Macro version of :cfunc:`PyMethod_Function` which avoids error checking.
2625
2626
2627.. cfunction:: PyObject* PyMethod_Self(PyObject *meth)
2628
2629 Return the instance associated with the method *meth* if it is bound, otherwise
2630 return *NULL*.
2631
2632
2633.. cfunction:: PyObject* PyMethod_GET_SELF(PyObject *meth)
2634
2635 Macro version of :cfunc:`PyMethod_Self` which avoids error checking.
2636
2637
2638.. _moduleobjects:
2639
2640Module Objects
2641--------------
2642
2643.. index:: object: module
2644
2645There are only a few functions special to module objects.
2646
2647
2648.. cvar:: PyTypeObject PyModule_Type
2649
2650 .. index:: single: ModuleType (in module types)
2651
2652 This instance of :ctype:`PyTypeObject` represents the Python module type. This
2653 is exposed to Python programs as ``types.ModuleType``.
2654
2655
2656.. cfunction:: int PyModule_Check(PyObject *p)
2657
2658 Return true if *p* is a module object, or a subtype of a module object.
2659
Georg Brandl116aa622007-08-15 14:28:22 +00002660
2661.. cfunction:: int PyModule_CheckExact(PyObject *p)
2662
2663 Return true if *p* is a module object, but not a subtype of
2664 :cdata:`PyModule_Type`.
2665
Georg Brandl116aa622007-08-15 14:28:22 +00002666
2667.. cfunction:: PyObject* PyModule_New(const char *name)
2668
2669 .. index::
2670 single: __name__ (module attribute)
2671 single: __doc__ (module attribute)
2672 single: __file__ (module attribute)
2673
2674 Return a new module object with the :attr:`__name__` attribute set to *name*.
2675 Only the module's :attr:`__doc__` and :attr:`__name__` attributes are filled in;
2676 the caller is responsible for providing a :attr:`__file__` attribute.
2677
2678
2679.. cfunction:: PyObject* PyModule_GetDict(PyObject *module)
2680
2681 .. index:: single: __dict__ (module attribute)
2682
2683 Return the dictionary object that implements *module*'s namespace; this object
2684 is the same as the :attr:`__dict__` attribute of the module object. This
2685 function never fails. It is recommended extensions use other
2686 :cfunc:`PyModule_\*` and :cfunc:`PyObject_\*` functions rather than directly
2687 manipulate a module's :attr:`__dict__`.
2688
2689
2690.. cfunction:: char* PyModule_GetName(PyObject *module)
2691
2692 .. index::
2693 single: __name__ (module attribute)
2694 single: SystemError (built-in exception)
2695
2696 Return *module*'s :attr:`__name__` value. If the module does not provide one,
2697 or if it is not a string, :exc:`SystemError` is raised and *NULL* is returned.
2698
2699
2700.. cfunction:: char* PyModule_GetFilename(PyObject *module)
2701
2702 .. index::
2703 single: __file__ (module attribute)
2704 single: SystemError (built-in exception)
2705
2706 Return the name of the file from which *module* was loaded using *module*'s
2707 :attr:`__file__` attribute. If this is not defined, or if it is not a string,
2708 raise :exc:`SystemError` and return *NULL*.
2709
2710
2711.. cfunction:: int PyModule_AddObject(PyObject *module, const char *name, PyObject *value)
2712
2713 Add an object to *module* as *name*. This is a convenience function which can
2714 be used from the module's initialization function. This steals a reference to
2715 *value*. Return ``-1`` on error, ``0`` on success.
2716
Georg Brandl116aa622007-08-15 14:28:22 +00002717
2718.. cfunction:: int PyModule_AddIntConstant(PyObject *module, const char *name, long value)
2719
2720 Add an integer constant to *module* as *name*. This convenience function can be
2721 used from the module's initialization function. Return ``-1`` on error, ``0`` on
2722 success.
2723
Georg Brandl116aa622007-08-15 14:28:22 +00002724
2725.. cfunction:: int PyModule_AddStringConstant(PyObject *module, const char *name, const char *value)
2726
2727 Add a string constant to *module* as *name*. This convenience function can be
2728 used from the module's initialization function. The string *value* must be
2729 null-terminated. Return ``-1`` on error, ``0`` on success.
2730
Georg Brandl116aa622007-08-15 14:28:22 +00002731
2732.. _iterator-objects:
2733
2734Iterator Objects
2735----------------
2736
2737Python provides two general-purpose iterator objects. The first, a sequence
2738iterator, works with an arbitrary sequence supporting the :meth:`__getitem__`
2739method. The second works with a callable object and a sentinel value, calling
2740the callable for each item in the sequence, and ending the iteration when the
2741sentinel value is returned.
2742
2743
2744.. cvar:: PyTypeObject PySeqIter_Type
2745
2746 Type object for iterator objects returned by :cfunc:`PySeqIter_New` and the
2747 one-argument form of the :func:`iter` built-in function for built-in sequence
2748 types.
2749
Georg Brandl116aa622007-08-15 14:28:22 +00002750
2751.. cfunction:: int PySeqIter_Check(op)
2752
2753 Return true if the type of *op* is :cdata:`PySeqIter_Type`.
2754
Georg Brandl116aa622007-08-15 14:28:22 +00002755
2756.. cfunction:: PyObject* PySeqIter_New(PyObject *seq)
2757
2758 Return an iterator that works with a general sequence object, *seq*. The
2759 iteration ends when the sequence raises :exc:`IndexError` for the subscripting
2760 operation.
2761
Georg Brandl116aa622007-08-15 14:28:22 +00002762
2763.. cvar:: PyTypeObject PyCallIter_Type
2764
2765 Type object for iterator objects returned by :cfunc:`PyCallIter_New` and the
2766 two-argument form of the :func:`iter` built-in function.
2767
Georg Brandl116aa622007-08-15 14:28:22 +00002768
2769.. cfunction:: int PyCallIter_Check(op)
2770
2771 Return true if the type of *op* is :cdata:`PyCallIter_Type`.
2772
Georg Brandl116aa622007-08-15 14:28:22 +00002773
2774.. cfunction:: PyObject* PyCallIter_New(PyObject *callable, PyObject *sentinel)
2775
2776 Return a new iterator. The first parameter, *callable*, can be any Python
2777 callable object that can be called with no parameters; each call to it should
2778 return the next item in the iteration. When *callable* returns a value equal to
2779 *sentinel*, the iteration will be terminated.
2780
Georg Brandl116aa622007-08-15 14:28:22 +00002781
2782.. _descriptor-objects:
2783
2784Descriptor Objects
2785------------------
2786
2787"Descriptors" are objects that describe some attribute of an object. They are
2788found in the dictionary of type objects.
2789
Georg Brandl321976b2007-09-01 12:33:24 +00002790.. XXX document these!
Georg Brandl116aa622007-08-15 14:28:22 +00002791
2792.. cvar:: PyTypeObject PyProperty_Type
2793
2794 The type object for the built-in descriptor types.
2795
Georg Brandl116aa622007-08-15 14:28:22 +00002796
2797.. cfunction:: PyObject* PyDescr_NewGetSet(PyTypeObject *type, struct PyGetSetDef *getset)
2798
Georg Brandl116aa622007-08-15 14:28:22 +00002799
2800.. cfunction:: PyObject* PyDescr_NewMember(PyTypeObject *type, struct PyMemberDef *meth)
2801
Georg Brandl116aa622007-08-15 14:28:22 +00002802
2803.. cfunction:: PyObject* PyDescr_NewMethod(PyTypeObject *type, struct PyMethodDef *meth)
2804
Georg Brandl116aa622007-08-15 14:28:22 +00002805
2806.. cfunction:: PyObject* PyDescr_NewWrapper(PyTypeObject *type, struct wrapperbase *wrapper, void *wrapped)
2807
Georg Brandl116aa622007-08-15 14:28:22 +00002808
2809.. cfunction:: PyObject* PyDescr_NewClassMethod(PyTypeObject *type, PyMethodDef *method)
2810
Georg Brandl116aa622007-08-15 14:28:22 +00002811
2812.. cfunction:: int PyDescr_IsData(PyObject *descr)
2813
2814 Return true if the descriptor objects *descr* describes a data attribute, or
2815 false if it describes a method. *descr* must be a descriptor object; there is
2816 no error checking.
2817
Georg Brandl116aa622007-08-15 14:28:22 +00002818
2819.. cfunction:: PyObject* PyWrapper_New(PyObject *, PyObject *)
2820
Georg Brandl116aa622007-08-15 14:28:22 +00002821
2822.. _slice-objects:
2823
2824Slice Objects
2825-------------
2826
2827
2828.. cvar:: PyTypeObject PySlice_Type
2829
2830 .. index:: single: SliceType (in module types)
2831
2832 The type object for slice objects. This is the same as ``slice`` and
2833 ``types.SliceType``.
2834
2835
2836.. cfunction:: int PySlice_Check(PyObject *ob)
2837
2838 Return true if *ob* is a slice object; *ob* must not be *NULL*.
2839
2840
2841.. cfunction:: PyObject* PySlice_New(PyObject *start, PyObject *stop, PyObject *step)
2842
2843 Return a new slice object with the given values. The *start*, *stop*, and
2844 *step* parameters are used as the values of the slice object attributes of the
2845 same names. Any of the values may be *NULL*, in which case the ``None`` will be
2846 used for the corresponding attribute. Return *NULL* if the new object could not
2847 be allocated.
2848
2849
2850.. cfunction:: int PySlice_GetIndices(PySliceObject *slice, Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)
2851
2852 Retrieve the start, stop and step indices from the slice object *slice*,
2853 assuming a sequence of length *length*. Treats indices greater than *length* as
2854 errors.
2855
2856 Returns 0 on success and -1 on error with no exception set (unless one of the
2857 indices was not :const:`None` and failed to be converted to an integer, in which
2858 case -1 is returned with an exception set).
2859
2860 You probably do not want to use this function. If you want to use slice objects
2861 in versions of Python prior to 2.3, you would probably do well to incorporate
2862 the source of :cfunc:`PySlice_GetIndicesEx`, suitably renamed, in the source of
2863 your extension.
2864
2865
2866.. 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)
2867
2868 Usable replacement for :cfunc:`PySlice_GetIndices`. Retrieve the start, stop,
2869 and step indices from the slice object *slice* assuming a sequence of length
2870 *length*, and store the length of the slice in *slicelength*. Out of bounds
2871 indices are clipped in a manner consistent with the handling of normal slices.
2872
2873 Returns 0 on success and -1 on error with exception set.
2874
Georg Brandl116aa622007-08-15 14:28:22 +00002875
2876.. _weakrefobjects:
2877
2878Weak Reference Objects
2879----------------------
2880
2881Python supports *weak references* as first-class objects. There are two
2882specific object types which directly implement weak references. The first is a
2883simple reference object, and the second acts as a proxy for the original object
2884as much as it can.
2885
2886
2887.. cfunction:: int PyWeakref_Check(ob)
2888
2889 Return true if *ob* is either a reference or proxy object.
2890
Georg Brandl116aa622007-08-15 14:28:22 +00002891
2892.. cfunction:: int PyWeakref_CheckRef(ob)
2893
2894 Return true if *ob* is a reference object.
2895
Georg Brandl116aa622007-08-15 14:28:22 +00002896
2897.. cfunction:: int PyWeakref_CheckProxy(ob)
2898
2899 Return true if *ob* is a proxy object.
2900
Georg Brandl116aa622007-08-15 14:28:22 +00002901
2902.. cfunction:: PyObject* PyWeakref_NewRef(PyObject *ob, PyObject *callback)
2903
2904 Return a weak reference object for the object *ob*. This will always return
2905 a new reference, but is not guaranteed to create a new object; an existing
2906 reference object may be returned. The second parameter, *callback*, can be a
2907 callable object that receives notification when *ob* is garbage collected; it
2908 should accept a single parameter, which will be the weak reference object
2909 itself. *callback* may also be ``None`` or *NULL*. If *ob* is not a
2910 weakly-referencable object, or if *callback* is not callable, ``None``, or
2911 *NULL*, this will return *NULL* and raise :exc:`TypeError`.
2912
Georg Brandl116aa622007-08-15 14:28:22 +00002913
2914.. cfunction:: PyObject* PyWeakref_NewProxy(PyObject *ob, PyObject *callback)
2915
2916 Return a weak reference proxy object for the object *ob*. This will always
2917 return a new reference, but is not guaranteed to create a new object; an
2918 existing proxy object may be returned. The second parameter, *callback*, can
2919 be a callable object that receives notification when *ob* is garbage
2920 collected; it should accept a single parameter, which will be the weak
2921 reference object itself. *callback* may also be ``None`` or *NULL*. If *ob*
2922 is not a weakly-referencable object, or if *callback* is not callable,
2923 ``None``, or *NULL*, this will return *NULL* and raise :exc:`TypeError`.
2924
Georg Brandl116aa622007-08-15 14:28:22 +00002925
2926.. cfunction:: PyObject* PyWeakref_GetObject(PyObject *ref)
2927
2928 Return the referenced object from a weak reference, *ref*. If the referent is
2929 no longer live, returns ``None``.
2930
Georg Brandl116aa622007-08-15 14:28:22 +00002931
2932.. cfunction:: PyObject* PyWeakref_GET_OBJECT(PyObject *ref)
2933
2934 Similar to :cfunc:`PyWeakref_GetObject`, but implemented as a macro that does no
2935 error checking.
2936
Georg Brandl116aa622007-08-15 14:28:22 +00002937
2938.. _cobjects:
2939
2940CObjects
2941--------
2942
2943.. index:: object: CObject
2944
2945Refer to *Extending and Embedding the Python Interpreter*, section 1.12,
2946"Providing a C API for an Extension Module," for more information on using these
2947objects.
2948
2949
2950.. ctype:: PyCObject
2951
2952 This subtype of :ctype:`PyObject` represents an opaque value, useful for C
2953 extension modules who need to pass an opaque value (as a :ctype:`void\*`
2954 pointer) through Python code to other C code. It is often used to make a C
2955 function pointer defined in one module available to other modules, so the
2956 regular import mechanism can be used to access C APIs defined in dynamically
2957 loaded modules.
2958
2959
2960.. cfunction:: int PyCObject_Check(PyObject *p)
2961
2962 Return true if its argument is a :ctype:`PyCObject`.
2963
2964
2965.. cfunction:: PyObject* PyCObject_FromVoidPtr(void* cobj, void (*destr)(void *))
2966
2967 Create a :ctype:`PyCObject` from the ``void *`` *cobj*. The *destr* function
2968 will be called when the object is reclaimed, unless it is *NULL*.
2969
2970
2971.. cfunction:: PyObject* PyCObject_FromVoidPtrAndDesc(void* cobj, void* desc, void (*destr)(void *, void *))
2972
2973 Create a :ctype:`PyCObject` from the :ctype:`void \*` *cobj*. The *destr*
2974 function will be called when the object is reclaimed. The *desc* argument can
2975 be used to pass extra callback data for the destructor function.
2976
2977
2978.. cfunction:: void* PyCObject_AsVoidPtr(PyObject* self)
2979
2980 Return the object :ctype:`void \*` that the :ctype:`PyCObject` *self* was
2981 created with.
2982
2983
2984.. cfunction:: void* PyCObject_GetDesc(PyObject* self)
2985
2986 Return the description :ctype:`void \*` that the :ctype:`PyCObject` *self* was
2987 created with.
2988
2989
2990.. cfunction:: int PyCObject_SetVoidPtr(PyObject* self, void* cobj)
2991
2992 Set the void pointer inside *self* to *cobj*. The :ctype:`PyCObject` must not
2993 have an associated destructor. Return true on success, false on failure.
2994
2995
2996.. _cell-objects:
2997
2998Cell Objects
2999------------
3000
3001"Cell" objects are used to implement variables referenced by multiple scopes.
3002For each such variable, a cell object is created to store the value; the local
3003variables of each stack frame that references the value contains a reference to
3004the cells from outer scopes which also use that variable. When the value is
3005accessed, the value contained in the cell is used instead of the cell object
3006itself. This de-referencing of the cell object requires support from the
3007generated byte-code; these are not automatically de-referenced when accessed.
3008Cell objects are not likely to be useful elsewhere.
3009
3010
3011.. ctype:: PyCellObject
3012
3013 The C structure used for cell objects.
3014
3015
3016.. cvar:: PyTypeObject PyCell_Type
3017
3018 The type object corresponding to cell objects.
3019
3020
3021.. cfunction:: int PyCell_Check(ob)
3022
3023 Return true if *ob* is a cell object; *ob* must not be *NULL*.
3024
3025
3026.. cfunction:: PyObject* PyCell_New(PyObject *ob)
3027
3028 Create and return a new cell object containing the value *ob*. The parameter may
3029 be *NULL*.
3030
3031
3032.. cfunction:: PyObject* PyCell_Get(PyObject *cell)
3033
3034 Return the contents of the cell *cell*.
3035
3036
3037.. cfunction:: PyObject* PyCell_GET(PyObject *cell)
3038
3039 Return the contents of the cell *cell*, but without checking that *cell* is
3040 non-*NULL* and a cell object.
3041
3042
3043.. cfunction:: int PyCell_Set(PyObject *cell, PyObject *value)
3044
3045 Set the contents of the cell object *cell* to *value*. This releases the
3046 reference to any current content of the cell. *value* may be *NULL*. *cell*
3047 must be non-*NULL*; if it is not a cell object, ``-1`` will be returned. On
3048 success, ``0`` will be returned.
3049
3050
3051.. cfunction:: void PyCell_SET(PyObject *cell, PyObject *value)
3052
3053 Sets the value of the cell object *cell* to *value*. No reference counts are
3054 adjusted, and no checks are made for safety; *cell* must be non-*NULL* and must
3055 be a cell object.
3056
3057
3058.. _gen-objects:
3059
3060Generator Objects
3061-----------------
3062
3063Generator objects are what Python uses to implement generator iterators. They
3064are normally created by iterating over a function that yields values, rather
3065than explicitly calling :cfunc:`PyGen_New`.
3066
3067
3068.. ctype:: PyGenObject
3069
3070 The C structure used for generator objects.
3071
3072
3073.. cvar:: PyTypeObject PyGen_Type
3074
3075 The type object corresponding to generator objects
3076
3077
3078.. cfunction:: int PyGen_Check(ob)
3079
3080 Return true if *ob* is a generator object; *ob* must not be *NULL*.
3081
3082
3083.. cfunction:: int PyGen_CheckExact(ob)
3084
3085 Return true if *ob*'s type is *PyGen_Type* is a generator object; *ob* must not
3086 be *NULL*.
3087
3088
3089.. cfunction:: PyObject* PyGen_New(PyFrameObject *frame)
3090
3091 Create and return a new generator object based on the *frame* object. A
3092 reference to *frame* is stolen by this function. The parameter must not be
3093 *NULL*.
3094
3095
3096.. _datetimeobjects:
3097
3098DateTime Objects
3099----------------
3100
3101Various date and time objects are supplied by the :mod:`datetime` module.
3102Before using any of these functions, the header file :file:`datetime.h` must be
3103included in your source (note that this is not included by :file:`Python.h`),
3104and the macro :cfunc:`PyDateTime_IMPORT` must be invoked. The macro puts a
3105pointer to a C structure into a static variable, ``PyDateTimeAPI``, that is
3106used by the following macros.
3107
3108Type-check macros:
3109
Georg Brandl116aa622007-08-15 14:28:22 +00003110.. cfunction:: int PyDate_Check(PyObject *ob)
3111
3112 Return true if *ob* is of type :cdata:`PyDateTime_DateType` or a subtype of
3113 :cdata:`PyDateTime_DateType`. *ob* must not be *NULL*.
3114
Georg Brandl116aa622007-08-15 14:28:22 +00003115
3116.. cfunction:: int PyDate_CheckExact(PyObject *ob)
3117
3118 Return true if *ob* is of type :cdata:`PyDateTime_DateType`. *ob* must not be
3119 *NULL*.
3120
Georg Brandl116aa622007-08-15 14:28:22 +00003121
3122.. cfunction:: int PyDateTime_Check(PyObject *ob)
3123
3124 Return true if *ob* is of type :cdata:`PyDateTime_DateTimeType` or a subtype of
3125 :cdata:`PyDateTime_DateTimeType`. *ob* must not be *NULL*.
3126
Georg Brandl116aa622007-08-15 14:28:22 +00003127
3128.. cfunction:: int PyDateTime_CheckExact(PyObject *ob)
3129
3130 Return true if *ob* is of type :cdata:`PyDateTime_DateTimeType`. *ob* must not
3131 be *NULL*.
3132
Georg Brandl116aa622007-08-15 14:28:22 +00003133
3134.. cfunction:: int PyTime_Check(PyObject *ob)
3135
3136 Return true if *ob* is of type :cdata:`PyDateTime_TimeType` or a subtype of
3137 :cdata:`PyDateTime_TimeType`. *ob* must not be *NULL*.
3138
Georg Brandl116aa622007-08-15 14:28:22 +00003139
3140.. cfunction:: int PyTime_CheckExact(PyObject *ob)
3141
3142 Return true if *ob* is of type :cdata:`PyDateTime_TimeType`. *ob* must not be
3143 *NULL*.
3144
Georg Brandl116aa622007-08-15 14:28:22 +00003145
3146.. cfunction:: int PyDelta_Check(PyObject *ob)
3147
3148 Return true if *ob* is of type :cdata:`PyDateTime_DeltaType` or a subtype of
3149 :cdata:`PyDateTime_DeltaType`. *ob* must not be *NULL*.
3150
Georg Brandl116aa622007-08-15 14:28:22 +00003151
3152.. cfunction:: int PyDelta_CheckExact(PyObject *ob)
3153
3154 Return true if *ob* is of type :cdata:`PyDateTime_DeltaType`. *ob* must not be
3155 *NULL*.
3156
Georg Brandl116aa622007-08-15 14:28:22 +00003157
3158.. cfunction:: int PyTZInfo_Check(PyObject *ob)
3159
3160 Return true if *ob* is of type :cdata:`PyDateTime_TZInfoType` or a subtype of
3161 :cdata:`PyDateTime_TZInfoType`. *ob* must not be *NULL*.
3162
Georg Brandl116aa622007-08-15 14:28:22 +00003163
3164.. cfunction:: int PyTZInfo_CheckExact(PyObject *ob)
3165
3166 Return true if *ob* is of type :cdata:`PyDateTime_TZInfoType`. *ob* must not be
3167 *NULL*.
3168
Georg Brandl116aa622007-08-15 14:28:22 +00003169
3170Macros to create objects:
3171
Georg Brandl116aa622007-08-15 14:28:22 +00003172.. cfunction:: PyObject* PyDate_FromDate(int year, int month, int day)
3173
3174 Return a ``datetime.date`` object with the specified year, month and day.
3175
Georg Brandl116aa622007-08-15 14:28:22 +00003176
3177.. cfunction:: PyObject* PyDateTime_FromDateAndTime(int year, int month, int day, int hour, int minute, int second, int usecond)
3178
3179 Return a ``datetime.datetime`` object with the specified year, month, day, hour,
3180 minute, second and microsecond.
3181
Georg Brandl116aa622007-08-15 14:28:22 +00003182
3183.. cfunction:: PyObject* PyTime_FromTime(int hour, int minute, int second, int usecond)
3184
3185 Return a ``datetime.time`` object with the specified hour, minute, second and
3186 microsecond.
3187
Georg Brandl116aa622007-08-15 14:28:22 +00003188
3189.. cfunction:: PyObject* PyDelta_FromDSU(int days, int seconds, int useconds)
3190
3191 Return a ``datetime.timedelta`` object representing the given number of days,
3192 seconds and microseconds. Normalization is performed so that the resulting
3193 number of microseconds and seconds lie in the ranges documented for
3194 ``datetime.timedelta`` objects.
3195
Georg Brandl116aa622007-08-15 14:28:22 +00003196
3197Macros to extract fields from date objects. The argument must be an instance of
3198:cdata:`PyDateTime_Date`, including subclasses (such as
3199:cdata:`PyDateTime_DateTime`). The argument must not be *NULL*, and the type is
3200not checked:
3201
Georg Brandl116aa622007-08-15 14:28:22 +00003202.. cfunction:: int PyDateTime_GET_YEAR(PyDateTime_Date *o)
3203
3204 Return the year, as a positive int.
3205
Georg Brandl116aa622007-08-15 14:28:22 +00003206
3207.. cfunction:: int PyDateTime_GET_MONTH(PyDateTime_Date *o)
3208
3209 Return the month, as an int from 1 through 12.
3210
Georg Brandl116aa622007-08-15 14:28:22 +00003211
3212.. cfunction:: int PyDateTime_GET_DAY(PyDateTime_Date *o)
3213
3214 Return the day, as an int from 1 through 31.
3215
Georg Brandl116aa622007-08-15 14:28:22 +00003216
3217Macros to extract fields from datetime objects. The argument must be an
3218instance of :cdata:`PyDateTime_DateTime`, including subclasses. The argument
3219must not be *NULL*, and the type is not checked:
3220
Georg Brandl116aa622007-08-15 14:28:22 +00003221.. cfunction:: int PyDateTime_DATE_GET_HOUR(PyDateTime_DateTime *o)
3222
3223 Return the hour, as an int from 0 through 23.
3224
Georg Brandl116aa622007-08-15 14:28:22 +00003225
3226.. cfunction:: int PyDateTime_DATE_GET_MINUTE(PyDateTime_DateTime *o)
3227
3228 Return the minute, as an int from 0 through 59.
3229
Georg Brandl116aa622007-08-15 14:28:22 +00003230
3231.. cfunction:: int PyDateTime_DATE_GET_SECOND(PyDateTime_DateTime *o)
3232
3233 Return the second, as an int from 0 through 59.
3234
Georg Brandl116aa622007-08-15 14:28:22 +00003235
3236.. cfunction:: int PyDateTime_DATE_GET_MICROSECOND(PyDateTime_DateTime *o)
3237
3238 Return the microsecond, as an int from 0 through 999999.
3239
Georg Brandl116aa622007-08-15 14:28:22 +00003240
3241Macros to extract fields from time objects. The argument must be an instance of
3242:cdata:`PyDateTime_Time`, including subclasses. The argument must not be *NULL*,
3243and the type is not checked:
3244
Georg Brandl116aa622007-08-15 14:28:22 +00003245.. cfunction:: int PyDateTime_TIME_GET_HOUR(PyDateTime_Time *o)
3246
3247 Return the hour, as an int from 0 through 23.
3248
Georg Brandl116aa622007-08-15 14:28:22 +00003249
3250.. cfunction:: int PyDateTime_TIME_GET_MINUTE(PyDateTime_Time *o)
3251
3252 Return the minute, as an int from 0 through 59.
3253
Georg Brandl116aa622007-08-15 14:28:22 +00003254
3255.. cfunction:: int PyDateTime_TIME_GET_SECOND(PyDateTime_Time *o)
3256
3257 Return the second, as an int from 0 through 59.
3258
Georg Brandl116aa622007-08-15 14:28:22 +00003259
3260.. cfunction:: int PyDateTime_TIME_GET_MICROSECOND(PyDateTime_Time *o)
3261
3262 Return the microsecond, as an int from 0 through 999999.
3263
Georg Brandl116aa622007-08-15 14:28:22 +00003264
3265Macros for the convenience of modules implementing the DB API:
3266
Georg Brandl116aa622007-08-15 14:28:22 +00003267.. cfunction:: PyObject* PyDateTime_FromTimestamp(PyObject *args)
3268
3269 Create and return a new ``datetime.datetime`` object given an argument tuple
3270 suitable for passing to ``datetime.datetime.fromtimestamp()``.
3271
Georg Brandl116aa622007-08-15 14:28:22 +00003272
3273.. cfunction:: PyObject* PyDate_FromTimestamp(PyObject *args)
3274
3275 Create and return a new ``datetime.date`` object given an argument tuple
3276 suitable for passing to ``datetime.date.fromtimestamp()``.
3277
Georg Brandl116aa622007-08-15 14:28:22 +00003278
3279.. _setobjects:
3280
3281Set Objects
3282-----------
3283
3284.. sectionauthor:: Raymond D. Hettinger <python@rcn.com>
3285
3286
3287.. index::
3288 object: set
3289 object: frozenset
3290
Georg Brandl116aa622007-08-15 14:28:22 +00003291This section details the public API for :class:`set` and :class:`frozenset`
3292objects. Any functionality not listed below is best accessed using the either
3293the abstract object protocol (including :cfunc:`PyObject_CallMethod`,
3294:cfunc:`PyObject_RichCompareBool`, :cfunc:`PyObject_Hash`,
3295:cfunc:`PyObject_Repr`, :cfunc:`PyObject_IsTrue`, :cfunc:`PyObject_Print`, and
3296:cfunc:`PyObject_GetIter`) or the abstract number protocol (including
3297:cfunc:`PyNumber_And`, :cfunc:`PyNumber_Subtract`, :cfunc:`PyNumber_Or`,
3298:cfunc:`PyNumber_Xor`, :cfunc:`PyNumber_InPlaceAnd`,
3299:cfunc:`PyNumber_InPlaceSubtract`, :cfunc:`PyNumber_InPlaceOr`, and
3300:cfunc:`PyNumber_InPlaceXor`).
3301
3302
3303.. ctype:: PySetObject
3304
3305 This subtype of :ctype:`PyObject` is used to hold the internal data for both
3306 :class:`set` and :class:`frozenset` objects. It is like a :ctype:`PyDictObject`
3307 in that it is a fixed size for small sets (much like tuple storage) and will
3308 point to a separate, variable sized block of memory for medium and large sized
3309 sets (much like list storage). None of the fields of this structure should be
3310 considered public and are subject to change. All access should be done through
3311 the documented API rather than by manipulating the values in the structure.
3312
3313
3314.. cvar:: PyTypeObject PySet_Type
3315
3316 This is an instance of :ctype:`PyTypeObject` representing the Python
3317 :class:`set` type.
3318
3319
3320.. cvar:: PyTypeObject PyFrozenSet_Type
3321
3322 This is an instance of :ctype:`PyTypeObject` representing the Python
3323 :class:`frozenset` type.
3324
3325The following type check macros work on pointers to any Python object. Likewise,
3326the constructor functions work with any iterable Python object.
3327
3328
3329.. cfunction:: int PyAnySet_Check(PyObject *p)
3330
3331 Return true if *p* is a :class:`set` object, a :class:`frozenset` object, or an
3332 instance of a subtype.
3333
3334
3335.. cfunction:: int PyAnySet_CheckExact(PyObject *p)
3336
3337 Return true if *p* is a :class:`set` object or a :class:`frozenset` object but
3338 not an instance of a subtype.
3339
3340
3341.. cfunction:: int PyFrozenSet_CheckExact(PyObject *p)
3342
3343 Return true if *p* is a :class:`frozenset` object but not an instance of a
3344 subtype.
3345
3346
3347.. cfunction:: PyObject* PySet_New(PyObject *iterable)
3348
3349 Return a new :class:`set` containing objects returned by the *iterable*. The
3350 *iterable* may be *NULL* to create a new empty set. Return the new set on
3351 success or *NULL* on failure. Raise :exc:`TypeError` if *iterable* is not
3352 actually iterable. The constructor is also useful for copying a set
3353 (``c=set(s)``).
3354
3355
3356.. cfunction:: PyObject* PyFrozenSet_New(PyObject *iterable)
3357
3358 Return a new :class:`frozenset` containing objects returned by the *iterable*.
3359 The *iterable* may be *NULL* to create a new empty frozenset. Return the new
3360 set on success or *NULL* on failure. Raise :exc:`TypeError` if *iterable* is
3361 not actually iterable.
3362
3363The following functions and macros are available for instances of :class:`set`
3364or :class:`frozenset` or instances of their subtypes.
3365
3366
Thomas Wouters1b7f8912007-09-19 03:06:30 +00003367.. cfunction:: Py_ssize_t PySet_Size(PyObject *anyset)
Georg Brandl116aa622007-08-15 14:28:22 +00003368
3369 .. index:: builtin: len
3370
3371 Return the length of a :class:`set` or :class:`frozenset` object. Equivalent to
3372 ``len(anyset)``. Raises a :exc:`PyExc_SystemError` if *anyset* is not a
3373 :class:`set`, :class:`frozenset`, or an instance of a subtype.
3374
3375
Thomas Wouters1b7f8912007-09-19 03:06:30 +00003376.. cfunction:: Py_ssize_t PySet_GET_SIZE(PyObject *anyset)
Georg Brandl116aa622007-08-15 14:28:22 +00003377
3378 Macro form of :cfunc:`PySet_Size` without error checking.
3379
3380
3381.. cfunction:: int PySet_Contains(PyObject *anyset, PyObject *key)
3382
3383 Return 1 if found, 0 if not found, and -1 if an error is encountered. Unlike
3384 the Python :meth:`__contains__` method, this function does not automatically
3385 convert unhashable sets into temporary frozensets. Raise a :exc:`TypeError` if
3386 the *key* is unhashable. Raise :exc:`PyExc_SystemError` if *anyset* is not a
3387 :class:`set`, :class:`frozenset`, or an instance of a subtype.
3388
3389The following functions are available for instances of :class:`set` or its
3390subtypes but not for instances of :class:`frozenset` or its subtypes.
3391
3392
3393.. cfunction:: int PySet_Add(PyObject *set, PyObject *key)
3394
3395 Add *key* to a :class:`set` instance. Does not apply to :class:`frozenset`
3396 instances. Return 0 on success or -1 on failure. Raise a :exc:`TypeError` if
3397 the *key* is unhashable. Raise a :exc:`MemoryError` if there is no room to grow.
3398 Raise a :exc:`SystemError` if *set* is an not an instance of :class:`set` or its
3399 subtype.
3400
3401
3402.. cfunction:: int PySet_Discard(PyObject *set, PyObject *key)
3403
3404 Return 1 if found and removed, 0 if not found (no action taken), and -1 if an
3405 error is encountered. Does not raise :exc:`KeyError` for missing keys. Raise a
3406 :exc:`TypeError` if the *key* is unhashable. Unlike the Python :meth:`discard`
3407 method, this function does not automatically convert unhashable sets into
3408 temporary frozensets. Raise :exc:`PyExc_SystemError` if *set* is an not an
3409 instance of :class:`set` or its subtype.
3410
3411
3412.. cfunction:: PyObject* PySet_Pop(PyObject *set)
3413
3414 Return a new reference to an arbitrary object in the *set*, and removes the
3415 object from the *set*. Return *NULL* on failure. Raise :exc:`KeyError` if the
3416 set is empty. Raise a :exc:`SystemError` if *set* is an not an instance of
3417 :class:`set` or its subtype.
3418
3419
3420.. cfunction:: int PySet_Clear(PyObject *set)
3421
3422 Empty an existing set of all elements.
3423