• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# This file lists the contents of the Limited API and Stable ABI.
2# Please append new items at the end.
3
4# The syntax of this file is not fixed.
5# It is designed to be read only by Tools/build/stable_abi.py, which can change
6# without notice.
7
8# For the history of the stable ABI prior to this file,
9# see the history of PC/python3dll.c and before that, PC/python3.def,
10# and PC/pythonXYstub.def
11
12
13# The current format is TOML.
14
15# There are these kinds of top-level "items":
16# - struct: A C struct. See `struct_abi_kind` for how much of the struct is
17#   exposed.
18# - function: A function that must be kept available (and exported, i.e. not
19#   converted to a macro).
20# - const: A simple value, defined with `#define`.
21# - macro: A preprocessor macro more complex than a simple `const` value.
22# - data: An exported object, which must continue to be available but its exact
23#   value may change.
24# - typedef: A C typedef which is used in other definitions in the limited API.
25#   Its size/layout/signature must not change.
26# - feature_macro: Other items may be conditional on whether this macro
27#   is defined or not.
28
29# Each top-level item can have details defined for it:
30# - added: The version in which the item was added to the stable ABI.
31# - ifdef: The item is only available if the given feature_macro is defined.
32# - abi_only: If present, the item is not part of the Limited API, but it *is*
33#   part of the stable ABI. The item will not show up in user-facing docs.
34#   Typically used for:
35#   - private functions called by public macros, e.g. _Py_BuildValue_SizeT
36#   - items that were part of the limited API in the past, and must remain part
37#     of the stable ABI.
38#   - a combination of the above (functions that were called by macros that
39#     were public in the past)
40# - struct_abi_kind: for `struct`, defines how much of the struct is exposed:
41#   - 'full-abi': All of the struct is part of the ABI, including the size
42#     (users may define arrays of these structs).
43#     Typically used for initalization, rather than at runtime.
44#   - 'opaque': No members are part of the ABI, nor is the size. The Limited
45#     API only handles these via pointers. The C definition should be
46#     incomplete (opaque).
47#   - 'members': Only specific members are part of the stable ABI.
48#     The struct's size may change, so it can't be used in arrays.
49#     Do not add new structs of this kind without an extremely good reason.
50# - members: For `struct` with struct_abi_kind = 'members', a list of the
51#   exposed members.
52# - doc: for `feature_macro`, the blurb added in documentation
53# - windows: for `feature_macro`, this macro is defined on Windows.
54#   (This info is used to generate the DLL manifest and needs to be available
55#   on all platforms.)
56
57# Removing items from this file is generally not allowed, and additions should
58# be considered with that in mind. See the devguide for exact rules:
59#    https://devguide.python.org/c-api/#limited-api
60
61# User-facing docs are at:
62#    https://docs.python.org/3/c-api/stable.html#stable
63
64
65# Feature macros for optional functionality:
66
67[feature_macro.MS_WINDOWS]
68    doc = 'on Windows'
69    windows = true
70[feature_macro.HAVE_FORK]
71    doc = 'on platforms with fork()'
72[feature_macro.USE_STACKCHECK]
73    doc = 'on platforms with USE_STACKCHECK'
74    windows = 'maybe'
75[feature_macro.PY_HAVE_THREAD_NATIVE_ID]
76    doc = 'on platforms with native thread IDs'
77    windows = true
78[feature_macro.Py_REF_DEBUG]
79    doc = 'when Python is compiled in debug mode (with Py_REF_DEBUG)'
80    windows = 'maybe'
81[feature_macro.Py_TRACE_REFS]
82    # nb. This mode is not compatible with Stable ABI/Limited API.
83    doc = 'when Python is compiled with Py_TRACE_REFS'
84    windows = 'maybe'
85
86
87# Mentioned in PEP 384:
88
89[struct.PyObject]
90    added = '3.2'
91    members = ['ob_refcnt', 'ob_type']
92    struct_abi_kind = 'members'
93[struct.PyVarObject]
94    added = '3.2'
95    members = ['ob_base', 'ob_size']
96    struct_abi_kind = 'members'
97[struct.PyMethodDef]
98    added = '3.2'
99    struct_abi_kind = 'full-abi'
100[struct.PyMemberDef]
101    added = '3.2'  # Before 3.12, PyMemberDef required #include "structmember.h"
102    struct_abi_kind = 'full-abi'
103[struct.PyGetSetDef]
104    added = '3.2'
105    struct_abi_kind = 'full-abi'
106[struct.PyModuleDef_Base]
107    added = '3.2'
108    struct_abi_kind = 'full-abi'
109[struct.PyModuleDef]
110    added = '3.2'
111    struct_abi_kind = 'full-abi'
112[struct.PyStructSequence_Field]
113    added = '3.2'
114    struct_abi_kind = 'full-abi'
115[struct.PyStructSequence_Desc]
116    added = '3.2'
117    struct_abi_kind = 'full-abi'
118[struct.PyType_Slot]
119    added = '3.2'
120    struct_abi_kind = 'full-abi'
121[struct.PyType_Spec]
122    added = '3.2'
123    struct_abi_kind = 'full-abi'
124[struct.PyThreadState]
125    added = '3.2'
126    struct_abi_kind = 'opaque'
127[struct.PyInterpreterState]
128    added = '3.2'
129    struct_abi_kind = 'opaque'
130[struct.PyFrameObject]
131    added = '3.2'
132    struct_abi_kind = 'opaque'
133[struct.symtable]
134    added = '3.2'
135    struct_abi_kind = 'opaque'
136[struct.PyWeakReference]
137    added = '3.2'
138    struct_abi_kind = 'opaque'
139[struct.PyLongObject]
140    added = '3.2'
141    struct_abi_kind = 'opaque'
142[struct.PyTypeObject]
143    added = '3.2'
144    struct_abi_kind = 'opaque'
145
146[function.PyType_FromSpec]
147    added = '3.2'
148
149[const.Py_tp_dealloc]
150    added = '3.2'
151[const.Py_tp_getattr]
152    added = '3.2'
153[const.Py_tp_setattr]
154    added = '3.2'
155[const.Py_tp_repr]
156    added = '3.2'
157[const.Py_tp_hash]
158    added = '3.2'
159[const.Py_tp_call]
160    added = '3.2'
161[const.Py_tp_str]
162    added = '3.2'
163[const.Py_tp_getattro]
164    added = '3.2'
165[const.Py_tp_setattro]
166    added = '3.2'
167[const.Py_tp_doc]
168    added = '3.2'
169[const.Py_tp_traverse]
170    added = '3.2'
171[const.Py_tp_clear]
172    added = '3.2'
173[const.Py_tp_richcompare]
174    added = '3.2'
175[const.Py_tp_iter]
176    added = '3.2'
177[const.Py_tp_iternext]
178    added = '3.2'
179[const.Py_tp_methods]
180    added = '3.2'
181[const.Py_tp_base]
182    added = '3.2'
183[const.Py_tp_descr_get]
184    added = '3.2'
185[const.Py_tp_descr_set]
186    added = '3.2'
187[const.Py_tp_init]
188    added = '3.2'
189[const.Py_tp_alloc]
190    added = '3.2'
191[const.Py_tp_new]
192    added = '3.2'
193[const.Py_tp_members]
194    added = '3.2'
195[const.Py_tp_getset]
196    added = '3.2'
197[const.Py_tp_free]
198    added = '3.2'
199[const.Py_tp_is_gc]
200    added = '3.2'
201[const.Py_tp_bases]
202    added = '3.2'
203[const.Py_tp_del]
204    added = '3.2'
205[const.Py_nb_add]
206    added = '3.2'
207[const.Py_nb_subtract]
208    added = '3.2'
209[const.Py_nb_multiply]
210    added = '3.2'
211[const.Py_nb_remainder]
212    added = '3.2'
213[const.Py_nb_divmod]
214    added = '3.2'
215[const.Py_nb_power]
216    added = '3.2'
217[const.Py_nb_negative]
218    added = '3.2'
219[const.Py_nb_positive]
220    added = '3.2'
221[const.Py_nb_absolute]
222    added = '3.2'
223[const.Py_nb_bool]
224    added = '3.2'
225[const.Py_nb_invert]
226    added = '3.2'
227[const.Py_nb_lshift]
228    added = '3.2'
229[const.Py_nb_rshift]
230    added = '3.2'
231[const.Py_nb_and]
232    added = '3.2'
233[const.Py_nb_xor]
234    added = '3.2'
235[const.Py_nb_or]
236    added = '3.2'
237[const.Py_nb_int]
238    added = '3.2'
239[const.Py_nb_float]
240    added = '3.2'
241[const.Py_nb_inplace_add]
242    added = '3.2'
243[const.Py_nb_inplace_subtract]
244    added = '3.2'
245[const.Py_nb_inplace_multiply]
246    added = '3.2'
247[const.Py_nb_inplace_remainder]
248    added = '3.2'
249[const.Py_nb_inplace_power]
250    added = '3.2'
251[const.Py_nb_inplace_lshift]
252    added = '3.2'
253[const.Py_nb_inplace_rshift]
254    added = '3.2'
255[const.Py_nb_inplace_and]
256    added = '3.2'
257[const.Py_nb_inplace_xor]
258    added = '3.2'
259[const.Py_nb_inplace_or]
260    added = '3.2'
261[const.Py_nb_floor_divide]
262    added = '3.2'
263[const.Py_nb_true_divide]
264    added = '3.2'
265[const.Py_nb_inplace_floor_divide]
266    added = '3.2'
267[const.Py_nb_inplace_true_divide]
268    added = '3.2'
269[const.Py_nb_index]
270    added = '3.2'
271[const.Py_sq_length]
272    added = '3.2'
273[const.Py_sq_concat]
274    added = '3.2'
275[const.Py_sq_repeat]
276    added = '3.2'
277[const.Py_sq_item]
278    added = '3.2'
279[const.Py_sq_ass_item]
280    added = '3.2'
281[const.Py_sq_contains]
282    added = '3.2'
283[const.Py_sq_inplace_concat]
284    added = '3.2'
285[const.Py_sq_inplace_repeat]
286    added = '3.2'
287[const.Py_mp_length]
288    added = '3.2'
289[const.Py_mp_subscript]
290    added = '3.2'
291[const.Py_mp_ass_subscript]
292    added = '3.2'
293
294[typedef.Py_uintptr_t]
295    added = '3.2'
296[typedef.Py_intptr_t]
297    added = '3.2'
298[typedef.Py_ssize_t]
299    added = '3.2'
300[typedef.unaryfunc]
301    added = '3.2'
302[typedef.binaryfunc]
303    added = '3.2'
304[typedef.ternaryfunc]
305    added = '3.2'
306[typedef.inquiry]
307    added = '3.2'
308[typedef.lenfunc]
309    added = '3.2'
310[typedef.ssizeargfunc]
311    added = '3.2'
312[typedef.ssizessizeargfunc]
313    added = '3.2'
314[typedef.ssizeobjargproc]
315    added = '3.2'
316[typedef.ssizessizeobjargproc]
317    added = '3.2'
318[typedef.objobjargproc]
319    added = '3.2'
320[typedef.objobjproc]
321    added = '3.2'
322[typedef.visitproc]
323    added = '3.2'
324[typedef.traverseproc]
325    added = '3.2'
326[typedef.destructor]
327    added = '3.2'
328[typedef.getattrfunc]
329    added = '3.2'
330[typedef.getattrofunc]
331    added = '3.2'
332[typedef.setattrfunc]
333    added = '3.2'
334[typedef.setattrofunc]
335    added = '3.2'
336[typedef.reprfunc]
337    added = '3.2'
338[typedef.hashfunc]
339    added = '3.2'
340[typedef.richcmpfunc]
341    added = '3.2'
342[typedef.getiterfunc]
343    added = '3.2'
344[typedef.iternextfunc]
345    added = '3.2'
346[typedef.descrgetfunc]
347    added = '3.2'
348[typedef.descrsetfunc]
349    added = '3.2'
350[typedef.initproc]
351    added = '3.2'
352[typedef.newfunc]
353    added = '3.2'
354[typedef.allocfunc]
355    added = '3.2'
356[typedef.PyCFunction]
357    added = '3.2'
358[typedef.PyCFunctionWithKeywords]
359    added = '3.2'
360[typedef.PyCapsule_Destructor]
361    added = '3.2'
362[typedef.getter]
363    added = '3.2'
364[typedef.setter]
365    added = '3.2'
366[typedef.PyOS_sighandler_t]
367    added = '3.2'
368[typedef.PyGILState_STATE]
369    added = '3.2'
370[typedef.Py_UCS4]
371    added = '3.2'
372
373[macro.Py_BEGIN_ALLOW_THREADS]
374    added = '3.2'
375[macro.Py_BLOCK_THREADS]
376    added = '3.2'
377[macro.Py_UNBLOCK_THREADS]
378    added = '3.2'
379[macro.Py_END_ALLOW_THREADS]
380    added = '3.2'
381
382# The following were added in PC/python3.def in the initial stable ABI commit,
383# 4d0d471a8031de90a2b1ce99c4ac4780e60b3bc9,
384# and later amendments in 3.2:
385# 0d012f284be829c6217f60523db0e1671b7db9d9
386# c83bc3c1fbed14d27a5de3032e24d2cf006a7c4b
387
388[function.PyArg_Parse]
389    added = '3.2'
390[function.PyArg_ParseTuple]
391    added = '3.2'
392[function.PyArg_ParseTupleAndKeywords]
393    added = '3.2'
394[function.PyArg_UnpackTuple]
395    added = '3.2'
396[function.PyArg_VaParse]
397    added = '3.2'
398[function.PyArg_VaParseTupleAndKeywords]
399    added = '3.2'
400[function.PyArg_ValidateKeywordArguments]
401    added = '3.2'
402[data.PyBaseObject_Type]
403    added = '3.2'
404[function.PyBool_FromLong]
405    added = '3.2'
406[data.PyBool_Type]
407    added = '3.2'
408[data.PyByteArrayIter_Type]
409    added = '3.2'
410[function.PyByteArray_AsString]
411    added = '3.2'
412[function.PyByteArray_Concat]
413    added = '3.2'
414[function.PyByteArray_FromObject]
415    added = '3.2'
416[function.PyByteArray_FromStringAndSize]
417    added = '3.2'
418[function.PyByteArray_Resize]
419    added = '3.2'
420[function.PyByteArray_Size]
421    added = '3.2'
422[data.PyByteArray_Type]
423    added = '3.2'
424[data.PyBytesIter_Type]
425    added = '3.2'
426[function.PyBytes_AsString]
427    added = '3.2'
428[function.PyBytes_AsStringAndSize]
429    added = '3.2'
430[function.PyBytes_Concat]
431    added = '3.2'
432[function.PyBytes_ConcatAndDel]
433    added = '3.2'
434[function.PyBytes_DecodeEscape]
435    added = '3.2'
436[function.PyBytes_FromFormat]
437    added = '3.2'
438[function.PyBytes_FromFormatV]
439    added = '3.2'
440[function.PyBytes_FromObject]
441    added = '3.2'
442[function.PyBytes_FromString]
443    added = '3.2'
444[function.PyBytes_FromStringAndSize]
445    added = '3.2'
446[function.PyBytes_Repr]
447    added = '3.2'
448[function.PyBytes_Size]
449    added = '3.2'
450[data.PyBytes_Type]
451    added = '3.2'
452[function.PyCFunction_Call]
453    added = '3.2'
454    abi_only = true
455[function.PyCFunction_GetFlags]
456    added = '3.2'
457[function.PyCFunction_GetFunction]
458    added = '3.2'
459[function.PyCFunction_GetSelf]
460    added = '3.2'
461[function.PyCFunction_NewEx]
462    added = '3.2'
463[data.PyCFunction_Type]
464    added = '3.2'
465[function.PyCallIter_New]
466    added = '3.2'
467[data.PyCallIter_Type]
468    added = '3.2'
469[function.PyCallable_Check]
470    added = '3.2'
471[function.PyCapsule_GetContext]
472    added = '3.2'
473[function.PyCapsule_GetDestructor]
474    added = '3.2'
475[function.PyCapsule_GetName]
476    added = '3.2'
477[function.PyCapsule_GetPointer]
478    added = '3.2'
479[function.PyCapsule_Import]
480    added = '3.2'
481[function.PyCapsule_IsValid]
482    added = '3.2'
483[function.PyCapsule_New]
484    added = '3.2'
485[function.PyCapsule_SetContext]
486    added = '3.2'
487[function.PyCapsule_SetDestructor]
488    added = '3.2'
489[function.PyCapsule_SetName]
490    added = '3.2'
491[function.PyCapsule_SetPointer]
492    added = '3.2'
493[data.PyCapsule_Type]
494    added = '3.2'
495[data.PyClassMethodDescr_Type]
496    added = '3.2'
497[function.PyCodec_BackslashReplaceErrors]
498    added = '3.2'
499[function.PyCodec_Decode]
500    added = '3.2'
501[function.PyCodec_Decoder]
502    added = '3.2'
503[function.PyCodec_Encode]
504    added = '3.2'
505[function.PyCodec_Encoder]
506    added = '3.2'
507[function.PyCodec_IgnoreErrors]
508    added = '3.2'
509[function.PyCodec_IncrementalDecoder]
510    added = '3.2'
511[function.PyCodec_IncrementalEncoder]
512    added = '3.2'
513[function.PyCodec_KnownEncoding]
514    added = '3.2'
515[function.PyCodec_LookupError]
516    added = '3.2'
517[function.PyCodec_Register]
518    added = '3.2'
519[function.PyCodec_RegisterError]
520    added = '3.2'
521[function.PyCodec_ReplaceErrors]
522    added = '3.2'
523[function.PyCodec_StreamReader]
524    added = '3.2'
525[function.PyCodec_StreamWriter]
526    added = '3.2'
527[function.PyCodec_StrictErrors]
528    added = '3.2'
529[function.PyCodec_XMLCharRefReplaceErrors]
530    added = '3.2'
531[function.PyComplex_FromDoubles]
532    added = '3.2'
533[function.PyComplex_ImagAsDouble]
534    added = '3.2'
535[function.PyComplex_RealAsDouble]
536    added = '3.2'
537[data.PyComplex_Type]
538    added = '3.2'
539[function.PyDescr_NewClassMethod]
540    added = '3.2'
541[function.PyDescr_NewGetSet]
542    added = '3.2'
543[function.PyDescr_NewMember]
544    added = '3.2'
545[function.PyDescr_NewMethod]
546    added = '3.2'
547[data.PyDictItems_Type]
548    added = '3.2'
549[data.PyDictIterItem_Type]
550    added = '3.2'
551[data.PyDictIterKey_Type]
552    added = '3.2'
553[data.PyDictIterValue_Type]
554    added = '3.2'
555[data.PyDictKeys_Type]
556    added = '3.2'
557[function.PyDictProxy_New]
558    added = '3.2'
559[data.PyDictProxy_Type]
560    added = '3.2'
561[data.PyDictValues_Type]
562    added = '3.2'
563[function.PyDict_Clear]
564    added = '3.2'
565[function.PyDict_Contains]
566    added = '3.2'
567[function.PyDict_Copy]
568    added = '3.2'
569[function.PyDict_DelItem]
570    added = '3.2'
571[function.PyDict_DelItemString]
572    added = '3.2'
573[function.PyDict_GetItem]
574    added = '3.2'
575[function.PyDict_GetItemString]
576    added = '3.2'
577[function.PyDict_GetItemWithError]
578    added = '3.2'
579[function.PyDict_Items]
580    added = '3.2'
581[function.PyDict_Keys]
582    added = '3.2'
583[function.PyDict_Merge]
584    added = '3.2'
585[function.PyDict_MergeFromSeq2]
586    added = '3.2'
587[function.PyDict_New]
588    added = '3.2'
589[function.PyDict_Next]
590    added = '3.2'
591[function.PyDict_SetItem]
592    added = '3.2'
593[function.PyDict_SetItemString]
594    added = '3.2'
595[function.PyDict_Size]
596    added = '3.2'
597[data.PyDict_Type]
598    added = '3.2'
599[function.PyDict_Update]
600    added = '3.2'
601[function.PyDict_Values]
602    added = '3.2'
603[data.PyEllipsis_Type]
604    added = '3.2'
605[data.PyEnum_Type]
606    added = '3.2'
607[function.PyErr_BadArgument]
608    added = '3.2'
609[function.PyErr_BadInternalCall]
610    added = '3.2'
611[function.PyErr_CheckSignals]
612    added = '3.2'
613[function.PyErr_Clear]
614    added = '3.2'
615[function.PyErr_Display]
616    added = '3.2'
617[function.PyErr_DisplayException]
618    added = '3.12'
619[function.PyErr_ExceptionMatches]
620    added = '3.2'
621[function.PyErr_Fetch]
622    added = '3.2'
623[function.PyErr_Format]
624    added = '3.2'
625[function.PyErr_GivenExceptionMatches]
626    added = '3.2'
627[function.PyErr_NewException]
628    added = '3.2'
629[function.PyErr_NewExceptionWithDoc]
630    added = '3.2'
631[function.PyErr_NoMemory]
632    added = '3.2'
633[function.PyErr_NormalizeException]
634    added = '3.2'
635[function.PyErr_Occurred]
636    added = '3.2'
637[function.PyErr_Print]
638    added = '3.2'
639[function.PyErr_PrintEx]
640    added = '3.2'
641[function.PyErr_ProgramText]
642    added = '3.2'
643[function.PyErr_Restore]
644    added = '3.2'
645[function.PyErr_SetFromErrno]
646    added = '3.2'
647[function.PyErr_SetFromErrnoWithFilename]
648    added = '3.2'
649[function.PyErr_SetFromErrnoWithFilenameObject]
650    added = '3.2'
651[function.PyErr_SetInterrupt]
652    added = '3.2'
653[function.PyErr_SetNone]
654    added = '3.2'
655[function.PyErr_SetObject]
656    added = '3.2'
657[function.PyErr_SetString]
658    added = '3.2'
659[function.PyErr_SyntaxLocation]
660    added = '3.2'
661[function.PyErr_WarnEx]
662    added = '3.2'
663[function.PyErr_WarnExplicit]
664    added = '3.2'
665[function.PyErr_WarnFormat]
666    added = '3.2'
667[function.PyErr_WriteUnraisable]
668    added = '3.2'
669[function.PyEval_AcquireLock]
670    added = '3.2'
671    abi_only = true
672[function.PyEval_AcquireThread]
673    added = '3.2'
674[function.PyEval_CallFunction]
675    added = '3.2'
676    abi_only = true
677[function.PyEval_CallMethod]
678    added = '3.2'
679    abi_only = true
680[function.PyEval_CallObjectWithKeywords]
681    added = '3.2'
682    abi_only = true
683[function.PyEval_EvalCode]
684    added = '3.2'
685[function.PyEval_EvalCodeEx]
686    added = '3.2'
687[function.PyEval_EvalFrame]
688    added = '3.2'
689[function.PyEval_EvalFrameEx]
690    added = '3.2'
691[function.PyEval_GetBuiltins]
692    added = '3.2'
693[function.PyEval_GetFrame]
694    added = '3.2'
695[function.PyEval_GetFuncDesc]
696    added = '3.2'
697[function.PyEval_GetFuncName]
698    added = '3.2'
699[function.PyEval_GetGlobals]
700    added = '3.2'
701[function.PyEval_GetLocals]
702    added = '3.2'
703[function.PyEval_InitThreads]
704    added = '3.2'
705[function.PyEval_ReleaseLock]
706    added = '3.2'
707    abi_only = true
708[function.PyEval_ReleaseThread]
709    added = '3.2'
710[function.PyEval_RestoreThread]
711    added = '3.2'
712[function.PyEval_SaveThread]
713    added = '3.2'
714[function.PyEval_ThreadsInitialized]
715    added = '3.2'
716    abi_only = true
717[data.PyExc_ArithmeticError]
718    added = '3.2'
719[data.PyExc_AssertionError]
720    added = '3.2'
721[data.PyExc_AttributeError]
722    added = '3.2'
723[data.PyExc_BaseException]
724    added = '3.2'
725[data.PyExc_BaseExceptionGroup]
726    added = '3.11'
727[data.PyExc_BufferError]
728    added = '3.2'
729[data.PyExc_BytesWarning]
730    added = '3.2'
731[data.PyExc_DeprecationWarning]
732    added = '3.2'
733[data.PyExc_EOFError]
734    added = '3.2'
735[data.PyExc_EnvironmentError]
736    added = '3.2'
737[data.PyExc_Exception]
738    added = '3.2'
739[data.PyExc_FloatingPointError]
740    added = '3.2'
741[data.PyExc_FutureWarning]
742    added = '3.2'
743[data.PyExc_GeneratorExit]
744    added = '3.2'
745[data.PyExc_IOError]
746    added = '3.2'
747[data.PyExc_ImportError]
748    added = '3.2'
749[data.PyExc_ImportWarning]
750    added = '3.2'
751[data.PyExc_IndentationError]
752    added = '3.2'
753[data.PyExc_IndexError]
754    added = '3.2'
755[data.PyExc_KeyError]
756    added = '3.2'
757[data.PyExc_KeyboardInterrupt]
758    added = '3.2'
759[data.PyExc_LookupError]
760    added = '3.2'
761[data.PyExc_MemoryError]
762    added = '3.2'
763[data.PyExc_NameError]
764    added = '3.2'
765[data.PyExc_NotImplementedError]
766    added = '3.2'
767[data.PyExc_OSError]
768    added = '3.2'
769[data.PyExc_OverflowError]
770    added = '3.2'
771[data.PyExc_PendingDeprecationWarning]
772    added = '3.2'
773[data.PyExc_ReferenceError]
774    added = '3.2'
775[data.PyExc_RuntimeError]
776    added = '3.2'
777[data.PyExc_RuntimeWarning]
778    added = '3.2'
779[data.PyExc_StopIteration]
780    added = '3.2'
781[data.PyExc_SyntaxError]
782    added = '3.2'
783[data.PyExc_SyntaxWarning]
784    added = '3.2'
785[data.PyExc_SystemError]
786    added = '3.2'
787[data.PyExc_SystemExit]
788    added = '3.2'
789[data.PyExc_TabError]
790    added = '3.2'
791[data.PyExc_TypeError]
792    added = '3.2'
793[data.PyExc_UnboundLocalError]
794    added = '3.2'
795[data.PyExc_UnicodeDecodeError]
796    added = '3.2'
797[data.PyExc_UnicodeEncodeError]
798    added = '3.2'
799[data.PyExc_UnicodeError]
800    added = '3.2'
801[data.PyExc_UnicodeTranslateError]
802    added = '3.2'
803[data.PyExc_UnicodeWarning]
804    added = '3.2'
805[data.PyExc_UserWarning]
806    added = '3.2'
807[data.PyExc_ValueError]
808    added = '3.2'
809[data.PyExc_Warning]
810    added = '3.2'
811[data.PyExc_ZeroDivisionError]
812    added = '3.2'
813[function.PyException_GetCause]
814    added = '3.2'
815[function.PyException_GetContext]
816    added = '3.2'
817[function.PyException_GetTraceback]
818    added = '3.2'
819[function.PyException_SetCause]
820    added = '3.2'
821[function.PyException_SetContext]
822    added = '3.2'
823[function.PyException_SetTraceback]
824    added = '3.2'
825[function.PyFile_FromFd]
826    added = '3.2'
827[function.PyFile_GetLine]
828    added = '3.2'
829[function.PyFile_WriteObject]
830    added = '3.2'
831[function.PyFile_WriteString]
832    added = '3.2'
833[data.PyFilter_Type]
834    added = '3.2'
835[function.PyFloat_AsDouble]
836    added = '3.2'
837[function.PyFloat_FromDouble]
838    added = '3.2'
839[function.PyFloat_FromString]
840    added = '3.2'
841[function.PyFloat_GetInfo]
842    added = '3.2'
843[function.PyFloat_GetMax]
844    added = '3.2'
845[function.PyFloat_GetMin]
846    added = '3.2'
847[data.PyFloat_Type]
848    added = '3.2'
849[function.PyFrozenSet_New]
850    added = '3.2'
851[data.PyFrozenSet_Type]
852    added = '3.2'
853[function.PyGC_Collect]
854    added = '3.2'
855[function.PyGILState_Ensure]
856    added = '3.2'
857[function.PyGILState_GetThisThreadState]
858    added = '3.2'
859[function.PyGILState_Release]
860    added = '3.2'
861[data.PyGetSetDescr_Type]
862    added = '3.2'
863[function.PyImport_AddModule]
864    added = '3.2'
865[function.PyImport_AppendInittab]
866    added = '3.2'
867[function.PyImport_ExecCodeModule]
868    added = '3.2'
869[function.PyImport_ExecCodeModuleEx]
870    added = '3.2'
871[function.PyImport_ExecCodeModuleWithPathnames]
872    added = '3.2'
873[function.PyImport_GetImporter]
874    added = '3.2'
875[function.PyImport_GetMagicNumber]
876    added = '3.2'
877[function.PyImport_GetMagicTag]
878    added = '3.2'
879[function.PyImport_GetModuleDict]
880    added = '3.2'
881[function.PyImport_Import]
882    added = '3.2'
883[function.PyImport_ImportFrozenModule]
884    added = '3.2'
885[function.PyImport_ImportModule]
886    added = '3.2'
887[function.PyImport_ImportModuleLevel]
888    added = '3.2'
889[function.PyImport_ImportModuleNoBlock]
890    added = '3.2'
891[function.PyImport_ReloadModule]
892    added = '3.2'
893[function.PyInterpreterState_Clear]
894    added = '3.2'
895[function.PyInterpreterState_Delete]
896    added = '3.2'
897[function.PyInterpreterState_New]
898    added = '3.2'
899[function.PyIter_Next]
900    added = '3.2'
901[data.PyListIter_Type]
902    added = '3.2'
903[data.PyListRevIter_Type]
904    added = '3.2'
905[function.PyList_Append]
906    added = '3.2'
907[function.PyList_AsTuple]
908    added = '3.2'
909[function.PyList_GetItem]
910    added = '3.2'
911[function.PyList_GetSlice]
912    added = '3.2'
913[function.PyList_Insert]
914    added = '3.2'
915[function.PyList_New]
916    added = '3.2'
917[function.PyList_Reverse]
918    added = '3.2'
919[function.PyList_SetItem]
920    added = '3.2'
921[function.PyList_SetSlice]
922    added = '3.2'
923[function.PyList_Size]
924    added = '3.2'
925[function.PyList_Sort]
926    added = '3.2'
927[data.PyList_Type]
928    added = '3.2'
929[data.PyLongRangeIter_Type]
930    added = '3.2'
931[function.PyLong_AsDouble]
932    added = '3.2'
933[function.PyLong_AsLong]
934    added = '3.2'
935[function.PyLong_AsLongAndOverflow]
936    added = '3.2'
937[function.PyLong_AsLongLong]
938    added = '3.2'
939[function.PyLong_AsLongLongAndOverflow]
940    added = '3.2'
941[function.PyLong_AsSize_t]
942    added = '3.2'
943[function.PyLong_AsSsize_t]
944    added = '3.2'
945[function.PyLong_AsUnsignedLong]
946    added = '3.2'
947[function.PyLong_AsUnsignedLongLong]
948    added = '3.2'
949[function.PyLong_AsUnsignedLongLongMask]
950    added = '3.2'
951[function.PyLong_AsUnsignedLongMask]
952    added = '3.2'
953[function.PyLong_AsVoidPtr]
954    added = '3.2'
955[function.PyLong_FromDouble]
956    added = '3.2'
957[function.PyLong_FromLong]
958    added = '3.2'
959[function.PyLong_FromLongLong]
960    added = '3.2'
961[function.PyLong_FromSize_t]
962    added = '3.2'
963[function.PyLong_FromSsize_t]
964    added = '3.2'
965[function.PyLong_FromString]
966    added = '3.2'
967[function.PyLong_FromUnsignedLong]
968    added = '3.2'
969[function.PyLong_FromUnsignedLongLong]
970    added = '3.2'
971[function.PyLong_FromVoidPtr]
972    added = '3.2'
973[function.PyLong_GetInfo]
974    added = '3.2'
975[data.PyLong_Type]
976    added = '3.2'
977[data.PyMap_Type]
978    added = '3.2'
979[function.PyMapping_Check]
980    added = '3.2'
981[function.PyMapping_GetItemString]
982    added = '3.2'
983[function.PyMapping_HasKey]
984    added = '3.2'
985[function.PyMapping_HasKeyString]
986    added = '3.2'
987[function.PyMapping_Items]
988    added = '3.2'
989[function.PyMapping_Keys]
990    added = '3.2'
991[function.PyMapping_Length]
992    added = '3.2'
993[function.PyMapping_SetItemString]
994    added = '3.2'
995[function.PyMapping_Size]
996    added = '3.2'
997[function.PyMapping_Values]
998    added = '3.2'
999[function.PyMem_Free]
1000    added = '3.2'
1001[function.PyMem_Malloc]
1002    added = '3.2'
1003[function.PyMem_Realloc]
1004    added = '3.2'
1005[data.PyMemberDescr_Type]
1006    added = '3.2'
1007[function.PyMemoryView_FromObject]
1008    added = '3.2'
1009[function.PyMemoryView_GetContiguous]
1010    added = '3.2'
1011[data.PyMemoryView_Type]
1012    added = '3.2'
1013[data.PyMethodDescr_Type]
1014    added = '3.2'
1015[function.PyModule_AddIntConstant]
1016    added = '3.2'
1017[function.PyModule_AddObject]
1018    added = '3.2'
1019[function.PyModule_AddStringConstant]
1020    added = '3.2'
1021[function.PyModule_Create2]
1022    added = '3.2'
1023[function.PyModule_GetDef]
1024    added = '3.2'
1025[function.PyModule_GetDict]
1026    added = '3.2'
1027[function.PyModule_GetFilename]
1028    added = '3.2'
1029[function.PyModule_GetFilenameObject]
1030    added = '3.2'
1031[function.PyModule_GetName]
1032    added = '3.2'
1033[function.PyModule_GetState]
1034    added = '3.2'
1035[function.PyModule_New]
1036    added = '3.2'
1037[data.PyModule_Type]
1038    added = '3.2'
1039[function.PyNumber_Absolute]
1040    added = '3.2'
1041[function.PyNumber_Add]
1042    added = '3.2'
1043[function.PyNumber_And]
1044    added = '3.2'
1045[function.PyNumber_AsSsize_t]
1046    added = '3.2'
1047[function.PyNumber_Check]
1048    added = '3.2'
1049[function.PyNumber_Divmod]
1050    added = '3.2'
1051[function.PyNumber_Float]
1052    added = '3.2'
1053[function.PyNumber_FloorDivide]
1054    added = '3.2'
1055[function.PyNumber_InPlaceAdd]
1056    added = '3.2'
1057[function.PyNumber_InPlaceAnd]
1058    added = '3.2'
1059[function.PyNumber_InPlaceFloorDivide]
1060    added = '3.2'
1061[function.PyNumber_InPlaceLshift]
1062    added = '3.2'
1063[function.PyNumber_InPlaceMultiply]
1064    added = '3.2'
1065[function.PyNumber_InPlaceOr]
1066    added = '3.2'
1067[function.PyNumber_InPlacePower]
1068    added = '3.2'
1069[function.PyNumber_InPlaceRemainder]
1070    added = '3.2'
1071[function.PyNumber_InPlaceRshift]
1072    added = '3.2'
1073[function.PyNumber_InPlaceSubtract]
1074    added = '3.2'
1075[function.PyNumber_InPlaceTrueDivide]
1076    added = '3.2'
1077[function.PyNumber_InPlaceXor]
1078    added = '3.2'
1079[function.PyNumber_Index]
1080    added = '3.2'
1081[function.PyNumber_Invert]
1082    added = '3.2'
1083[function.PyNumber_Long]
1084    added = '3.2'
1085[function.PyNumber_Lshift]
1086    added = '3.2'
1087[function.PyNumber_Multiply]
1088    added = '3.2'
1089[function.PyNumber_Negative]
1090    added = '3.2'
1091[function.PyNumber_Or]
1092    added = '3.2'
1093[function.PyNumber_Positive]
1094    added = '3.2'
1095[function.PyNumber_Power]
1096    added = '3.2'
1097[function.PyNumber_Remainder]
1098    added = '3.2'
1099[function.PyNumber_Rshift]
1100    added = '3.2'
1101[function.PyNumber_Subtract]
1102    added = '3.2'
1103[function.PyNumber_ToBase]
1104    added = '3.2'
1105[function.PyNumber_TrueDivide]
1106    added = '3.2'
1107[function.PyNumber_Xor]
1108    added = '3.2'
1109[function.PyOS_AfterFork]
1110    added = '3.2'
1111    ifdef = 'HAVE_FORK'
1112[data.PyOS_InputHook]
1113    added = '3.2'
1114[function.PyOS_InterruptOccurred]
1115    added = '3.2'
1116[function.PyOS_double_to_string]
1117    added = '3.2'
1118[function.PyOS_getsig]
1119    added = '3.2'
1120[function.PyOS_mystricmp]
1121    added = '3.2'
1122[function.PyOS_mystrnicmp]
1123    added = '3.2'
1124[function.PyOS_setsig]
1125    added = '3.2'
1126[function.PyOS_snprintf]
1127    added = '3.2'
1128[function.PyOS_string_to_double]
1129    added = '3.2'
1130[function.PyOS_strtol]
1131    added = '3.2'
1132[function.PyOS_strtoul]
1133    added = '3.2'
1134[function.PyOS_vsnprintf]
1135    added = '3.2'
1136[function.PyObject_ASCII]
1137    added = '3.2'
1138[function.PyObject_AsFileDescriptor]
1139    added = '3.2'
1140[function.PyObject_Bytes]
1141    added = '3.2'
1142[function.PyObject_Call]
1143    added = '3.2'
1144[function.PyObject_CallFunction]
1145    added = '3.2'
1146[function.PyObject_CallFunctionObjArgs]
1147    added = '3.2'
1148[function.PyObject_CallMethod]
1149    added = '3.2'
1150[function.PyObject_CallMethodObjArgs]
1151    added = '3.2'
1152[function.PyObject_CallObject]
1153    added = '3.2'
1154[function.PyObject_ClearWeakRefs]
1155    added = '3.2'
1156[function.PyObject_DelItem]
1157    added = '3.2'
1158[function.PyObject_DelItemString]
1159    added = '3.2'
1160[function.PyObject_Dir]
1161    added = '3.2'
1162[function.PyObject_Format]
1163    added = '3.2'
1164[function.PyObject_Free]
1165    added = '3.2'
1166[function.PyObject_GC_Del]
1167    added = '3.2'
1168[function.PyObject_GC_Track]
1169    added = '3.2'
1170[function.PyObject_GC_UnTrack]
1171    added = '3.2'
1172[function.PyObject_GenericGetAttr]
1173    added = '3.2'
1174[function.PyObject_GenericSetAttr]
1175    added = '3.2'
1176[function.PyObject_GetAttr]
1177    added = '3.2'
1178[function.PyObject_GetAttrString]
1179    added = '3.2'
1180[function.PyObject_GetItem]
1181    added = '3.2'
1182[function.PyObject_GetIter]
1183    added = '3.2'
1184[function.PyObject_HasAttr]
1185    added = '3.2'
1186[function.PyObject_HasAttrString]
1187    added = '3.2'
1188[function.PyObject_Hash]
1189    added = '3.2'
1190[function.PyObject_HashNotImplemented]
1191    added = '3.2'
1192[function.PyObject_Init]
1193    added = '3.2'
1194[function.PyObject_InitVar]
1195    added = '3.2'
1196[function.PyObject_IsInstance]
1197    added = '3.2'
1198[function.PyObject_IsSubclass]
1199    added = '3.2'
1200[function.PyObject_IsTrue]
1201    added = '3.2'
1202[function.PyObject_Length]
1203    added = '3.2'
1204[function.PyObject_Malloc]
1205    added = '3.2'
1206[function.PyObject_Not]
1207    added = '3.2'
1208[function.PyObject_Realloc]
1209    added = '3.2'
1210[function.PyObject_Repr]
1211    added = '3.2'
1212[function.PyObject_RichCompare]
1213    added = '3.2'
1214[function.PyObject_RichCompareBool]
1215    added = '3.2'
1216[function.PyObject_SelfIter]
1217    added = '3.2'
1218[function.PyObject_SetAttr]
1219    added = '3.2'
1220[function.PyObject_SetAttrString]
1221    added = '3.2'
1222[function.PyObject_SetItem]
1223    added = '3.2'
1224[function.PyObject_Size]
1225    added = '3.2'
1226[function.PyObject_Str]
1227    added = '3.2'
1228[function.PyObject_Type]
1229    added = '3.2'
1230[data.PyProperty_Type]
1231    added = '3.2'
1232[data.PyRangeIter_Type]
1233    added = '3.2'
1234[data.PyRange_Type]
1235    added = '3.2'
1236[data.PyReversed_Type]
1237    added = '3.2'
1238[function.PySeqIter_New]
1239    added = '3.2'
1240[data.PySeqIter_Type]
1241    added = '3.2'
1242[function.PySequence_Check]
1243    added = '3.2'
1244[function.PySequence_Concat]
1245    added = '3.2'
1246[function.PySequence_Contains]
1247    added = '3.2'
1248[function.PySequence_Count]
1249    added = '3.2'
1250[function.PySequence_DelItem]
1251    added = '3.2'
1252[function.PySequence_DelSlice]
1253    added = '3.2'
1254[function.PySequence_Fast]
1255    added = '3.2'
1256[function.PySequence_GetItem]
1257    added = '3.2'
1258[function.PySequence_GetSlice]
1259    added = '3.2'
1260[function.PySequence_In]
1261    added = '3.2'
1262[function.PySequence_InPlaceConcat]
1263    added = '3.2'
1264[function.PySequence_InPlaceRepeat]
1265    added = '3.2'
1266[function.PySequence_Index]
1267    added = '3.2'
1268[function.PySequence_Length]
1269    added = '3.2'
1270[function.PySequence_List]
1271    added = '3.2'
1272[function.PySequence_Repeat]
1273    added = '3.2'
1274[function.PySequence_SetItem]
1275    added = '3.2'
1276[function.PySequence_SetSlice]
1277    added = '3.2'
1278[function.PySequence_Size]
1279    added = '3.2'
1280[function.PySequence_Tuple]
1281    added = '3.2'
1282[data.PySetIter_Type]
1283    added = '3.2'
1284[function.PySet_Add]
1285    added = '3.2'
1286[function.PySet_Clear]
1287    added = '3.2'
1288[function.PySet_Contains]
1289    added = '3.2'
1290[function.PySet_Discard]
1291    added = '3.2'
1292[function.PySet_New]
1293    added = '3.2'
1294[function.PySet_Pop]
1295    added = '3.2'
1296[function.PySet_Size]
1297    added = '3.2'
1298[data.PySet_Type]
1299    added = '3.2'
1300[function.PySlice_GetIndices]
1301    added = '3.2'
1302[function.PySlice_GetIndicesEx]
1303    added = '3.2'
1304[function.PySlice_New]
1305    added = '3.2'
1306[data.PySlice_Type]
1307    added = '3.2'
1308[function.PyState_FindModule]
1309    added = '3.2'
1310[function.PyStructSequence_GetItem]
1311    added = '3.2'
1312[function.PyStructSequence_New]
1313    added = '3.2'
1314[function.PyStructSequence_NewType]
1315    added = '3.2'
1316[function.PyStructSequence_SetItem]
1317    added = '3.2'
1318[data.PySuper_Type]
1319    added = '3.2'
1320[function.PySys_AddWarnOption]
1321    added = '3.2'
1322    abi_only = true
1323[function.PySys_AddWarnOptionUnicode]
1324    added = '3.2'
1325    abi_only = true
1326[function.PySys_FormatStderr]
1327    added = '3.2'
1328[function.PySys_FormatStdout]
1329    added = '3.2'
1330[function.PySys_GetObject]
1331    added = '3.2'
1332[function.PySys_HasWarnOptions]
1333    added = '3.2'
1334    abi_only = true
1335[function.PySys_ResetWarnOptions]
1336    added = '3.2'
1337[function.PySys_SetArgv]
1338    added = '3.2'
1339[function.PySys_SetArgvEx]
1340    added = '3.2'
1341[function.PySys_SetObject]
1342    added = '3.2'
1343[function.PySys_SetPath]
1344    added = '3.2'
1345    abi_only = true
1346[function.PySys_WriteStderr]
1347    added = '3.2'
1348[function.PySys_WriteStdout]
1349    added = '3.2'
1350[function.PyThreadState_Clear]
1351    added = '3.2'
1352[function.PyThreadState_Delete]
1353    added = '3.2'
1354[function.PyThreadState_DeleteCurrent]
1355    added = '3.2'
1356    abi_only = true
1357[function.PyThreadState_Get]
1358    added = '3.2'
1359[function.PyThreadState_GetDict]
1360    added = '3.2'
1361[function.PyThreadState_New]
1362    added = '3.2'
1363[function.PyThreadState_SetAsyncExc]
1364    added = '3.2'
1365[function.PyThreadState_Swap]
1366    added = '3.2'
1367[function.PyTraceBack_Here]
1368    added = '3.2'
1369[function.PyTraceBack_Print]
1370    added = '3.2'
1371[data.PyTraceBack_Type]
1372    added = '3.2'
1373[data.PyTupleIter_Type]
1374    added = '3.2'
1375[function.PyTuple_GetItem]
1376    added = '3.2'
1377[function.PyTuple_GetSlice]
1378    added = '3.2'
1379[function.PyTuple_New]
1380    added = '3.2'
1381[function.PyTuple_Pack]
1382    added = '3.2'
1383[function.PyTuple_SetItem]
1384    added = '3.2'
1385[function.PyTuple_Size]
1386    added = '3.2'
1387[data.PyTuple_Type]
1388    added = '3.2'
1389[function.PyType_ClearCache]
1390    added = '3.2'
1391[function.PyType_GenericAlloc]
1392    added = '3.2'
1393[function.PyType_GenericNew]
1394    added = '3.2'
1395[function.PyType_GetFlags]
1396    added = '3.2'
1397[function.PyType_IsSubtype]
1398    added = '3.2'
1399[function.PyType_Modified]
1400    added = '3.2'
1401[function.PyType_Ready]
1402    added = '3.2'
1403[data.PyType_Type]
1404    added = '3.2'
1405[function.PyUnicodeDecodeError_Create]
1406    added = '3.2'
1407[function.PyUnicodeDecodeError_GetEncoding]
1408    added = '3.2'
1409[function.PyUnicodeDecodeError_GetEnd]
1410    added = '3.2'
1411[function.PyUnicodeDecodeError_GetObject]
1412    added = '3.2'
1413[function.PyUnicodeDecodeError_GetReason]
1414    added = '3.2'
1415[function.PyUnicodeDecodeError_GetStart]
1416    added = '3.2'
1417[function.PyUnicodeDecodeError_SetEnd]
1418    added = '3.2'
1419[function.PyUnicodeDecodeError_SetReason]
1420    added = '3.2'
1421[function.PyUnicodeDecodeError_SetStart]
1422    added = '3.2'
1423[function.PyUnicodeEncodeError_GetEncoding]
1424    added = '3.2'
1425[function.PyUnicodeEncodeError_GetEnd]
1426    added = '3.2'
1427[function.PyUnicodeEncodeError_GetObject]
1428    added = '3.2'
1429[function.PyUnicodeEncodeError_GetReason]
1430    added = '3.2'
1431[function.PyUnicodeEncodeError_GetStart]
1432    added = '3.2'
1433[function.PyUnicodeEncodeError_SetEnd]
1434    added = '3.2'
1435[function.PyUnicodeEncodeError_SetReason]
1436    added = '3.2'
1437[function.PyUnicodeEncodeError_SetStart]
1438    added = '3.2'
1439[data.PyUnicodeIter_Type]
1440    added = '3.2'
1441[function.PyUnicodeTranslateError_GetEnd]
1442    added = '3.2'
1443[function.PyUnicodeTranslateError_GetObject]
1444    added = '3.2'
1445[function.PyUnicodeTranslateError_GetReason]
1446    added = '3.2'
1447[function.PyUnicodeTranslateError_GetStart]
1448    added = '3.2'
1449[function.PyUnicodeTranslateError_SetEnd]
1450    added = '3.2'
1451[function.PyUnicodeTranslateError_SetReason]
1452    added = '3.2'
1453[function.PyUnicodeTranslateError_SetStart]
1454    added = '3.2'
1455[function.PyUnicode_Append]
1456    added = '3.2'
1457[function.PyUnicode_AppendAndDel]
1458    added = '3.2'
1459[function.PyUnicode_AsASCIIString]
1460    added = '3.2'
1461[function.PyUnicode_AsCharmapString]
1462    added = '3.2'
1463[function.PyUnicode_AsDecodedObject]
1464    added = '3.2'
1465[function.PyUnicode_AsDecodedUnicode]
1466    added = '3.2'
1467[function.PyUnicode_AsEncodedObject]
1468    added = '3.2'
1469[function.PyUnicode_AsEncodedString]
1470    added = '3.2'
1471[function.PyUnicode_AsEncodedUnicode]
1472    added = '3.2'
1473[function.PyUnicode_AsLatin1String]
1474    added = '3.2'
1475[function.PyUnicode_AsRawUnicodeEscapeString]
1476    added = '3.2'
1477[function.PyUnicode_AsUTF16String]
1478    added = '3.2'
1479[function.PyUnicode_AsUTF32String]
1480    added = '3.2'
1481[function.PyUnicode_AsUTF8String]
1482    added = '3.2'
1483[function.PyUnicode_AsUnicodeEscapeString]
1484    added = '3.2'
1485[function.PyUnicode_AsWideChar]
1486    added = '3.2'
1487[function.PyUnicode_Compare]
1488    added = '3.2'
1489[function.PyUnicode_Concat]
1490    added = '3.2'
1491[function.PyUnicode_Contains]
1492    added = '3.2'
1493[function.PyUnicode_Count]
1494    added = '3.2'
1495[function.PyUnicode_Decode]
1496    added = '3.2'
1497[function.PyUnicode_DecodeASCII]
1498    added = '3.2'
1499[function.PyUnicode_DecodeCharmap]
1500    added = '3.2'
1501[function.PyUnicode_DecodeFSDefault]
1502    added = '3.2'
1503[function.PyUnicode_DecodeFSDefaultAndSize]
1504    added = '3.2'
1505[function.PyUnicode_DecodeLatin1]
1506    added = '3.2'
1507[function.PyUnicode_DecodeRawUnicodeEscape]
1508    added = '3.2'
1509[function.PyUnicode_DecodeUTF16]
1510    added = '3.2'
1511[function.PyUnicode_DecodeUTF16Stateful]
1512    added = '3.2'
1513[function.PyUnicode_DecodeUTF32]
1514    added = '3.2'
1515[function.PyUnicode_DecodeUTF32Stateful]
1516    added = '3.2'
1517[function.PyUnicode_DecodeUTF8]
1518    added = '3.2'
1519[function.PyUnicode_DecodeUTF8Stateful]
1520    added = '3.2'
1521[function.PyUnicode_DecodeUnicodeEscape]
1522    added = '3.2'
1523[function.PyUnicode_FSConverter]
1524    added = '3.2'
1525[function.PyUnicode_FSDecoder]
1526    added = '3.2'
1527[function.PyUnicode_Find]
1528    added = '3.2'
1529[function.PyUnicode_Format]
1530    added = '3.2'
1531[function.PyUnicode_FromEncodedObject]
1532    added = '3.2'
1533[function.PyUnicode_FromFormat]
1534    added = '3.2'
1535[function.PyUnicode_FromFormatV]
1536    added = '3.2'
1537[function.PyUnicode_FromObject]
1538    added = '3.2'
1539[function.PyUnicode_FromOrdinal]
1540    added = '3.2'
1541[function.PyUnicode_FromString]
1542    added = '3.2'
1543[function.PyUnicode_FromStringAndSize]
1544    added = '3.2'
1545[function.PyUnicode_FromWideChar]
1546    added = '3.2'
1547[function.PyUnicode_GetDefaultEncoding]
1548    added = '3.2'
1549[function.PyUnicode_GetSize]
1550    added = '3.2'
1551    abi_only = true
1552[function.PyUnicode_IsIdentifier]
1553    added = '3.2'
1554[function.PyUnicode_Join]
1555    added = '3.2'
1556[function.PyUnicode_Partition]
1557    added = '3.2'
1558[function.PyUnicode_RPartition]
1559    added = '3.2'
1560[function.PyUnicode_RSplit]
1561    added = '3.2'
1562[function.PyUnicode_Replace]
1563    added = '3.2'
1564[function.PyUnicode_Resize]
1565    added = '3.2'
1566[function.PyUnicode_RichCompare]
1567    added = '3.2'
1568[function.PyUnicode_Split]
1569    added = '3.2'
1570[function.PyUnicode_Splitlines]
1571    added = '3.2'
1572[function.PyUnicode_Tailmatch]
1573    added = '3.2'
1574[function.PyUnicode_Translate]
1575    added = '3.2'
1576[function.PyUnicode_BuildEncodingMap]
1577    added = '3.2'
1578[function.PyUnicode_CompareWithASCIIString]
1579    added = '3.2'
1580[function.PyUnicode_DecodeUTF7]
1581    added = '3.2'
1582[function.PyUnicode_DecodeUTF7Stateful]
1583    added = '3.2'
1584[function.PyUnicode_EncodeFSDefault]
1585    added = '3.2'
1586[function.PyUnicode_InternFromString]
1587    added = '3.2'
1588[function.PyUnicode_InternImmortal]
1589    added = '3.2'
1590    abi_only = true
1591[function.PyUnicode_InternInPlace]
1592    added = '3.2'
1593[data.PyUnicode_Type]
1594    added = '3.2'
1595[function.PyWeakref_GetObject]
1596    added = '3.2'
1597[function.PyWeakref_NewProxy]
1598    added = '3.2'
1599[function.PyWeakref_NewRef]
1600    added = '3.2'
1601[data.PyWrapperDescr_Type]
1602    added = '3.2'
1603[function.PyWrapper_New]
1604    added = '3.2'
1605[data.PyZip_Type]
1606    added = '3.2'
1607[function.Py_AddPendingCall]
1608    added = '3.2'
1609[function.Py_AtExit]
1610    added = '3.2'
1611[function.Py_BuildValue]
1612    added = '3.2'
1613[function.Py_CompileString]
1614    added = '3.2'
1615[function.Py_DecRef]
1616    added = '3.2'
1617[function.Py_EndInterpreter]
1618    added = '3.2'
1619[function.Py_Exit]
1620    added = '3.2'
1621[function.Py_FatalError]
1622    added = '3.2'
1623[data.Py_FileSystemDefaultEncoding]
1624    added = '3.2'
1625[function.Py_Finalize]
1626    added = '3.2'
1627[function.Py_GetBuildInfo]
1628    added = '3.2'
1629[function.Py_GetCompiler]
1630    added = '3.2'
1631[function.Py_GetCopyright]
1632    added = '3.2'
1633[function.Py_GetExecPrefix]
1634    added = '3.2'
1635[function.Py_GetPath]
1636    added = '3.2'
1637[function.Py_GetPlatform]
1638    added = '3.2'
1639[function.Py_GetPrefix]
1640    added = '3.2'
1641[function.Py_GetProgramFullPath]
1642    added = '3.2'
1643[function.Py_GetProgramName]
1644    added = '3.2'
1645[function.Py_GetPythonHome]
1646    added = '3.2'
1647[function.Py_GetRecursionLimit]
1648    added = '3.2'
1649[function.Py_GetVersion]
1650    added = '3.2'
1651[data.Py_HasFileSystemDefaultEncoding]
1652    added = '3.2'
1653[function.Py_IncRef]
1654    added = '3.2'
1655[function.Py_Initialize]
1656    added = '3.2'
1657[function.Py_InitializeEx]
1658    added = '3.2'
1659[function.Py_IsInitialized]
1660    added = '3.2'
1661[function.Py_Main]
1662    added = '3.2'
1663[function.Py_MakePendingCalls]
1664    added = '3.2'
1665[function.Py_NewInterpreter]
1666    added = '3.2'
1667[function.Py_ReprEnter]
1668    added = '3.2'
1669[function.Py_ReprLeave]
1670    added = '3.2'
1671[function.Py_SetProgramName]
1672    added = '3.2'
1673[function.Py_SetPythonHome]
1674    added = '3.2'
1675[function.Py_SetRecursionLimit]
1676    added = '3.2'
1677[function.Py_VaBuildValue]
1678    added = '3.2'
1679
1680[function._PyErr_BadInternalCall]
1681    added = '3.2'
1682    abi_only = true
1683[function._PyObject_CallFunction_SizeT]
1684    added = '3.2'
1685    abi_only = true
1686[function._PyObject_CallMethod_SizeT]
1687    added = '3.2'
1688    abi_only = true
1689[function._PyObject_GC_New]
1690    added = '3.2'
1691    abi_only = true
1692[function._PyObject_GC_NewVar]
1693    added = '3.2'
1694    abi_only = true
1695[function._PyObject_GC_Resize]
1696    added = '3.2'
1697    abi_only = true
1698[function._PyObject_New]
1699    added = '3.2'
1700    abi_only = true
1701[function._PyObject_NewVar]
1702    added = '3.2'
1703    abi_only = true
1704[function._PyState_AddModule]
1705    added = '3.2'
1706    abi_only = true
1707[function._PyThreadState_Init]
1708    added = '3.2'
1709    abi_only = true
1710[function._PyThreadState_Prealloc]
1711    added = '3.2'
1712    abi_only = true
1713[data._PyWeakref_CallableProxyType]
1714    added = '3.2'
1715    abi_only = true
1716[data._PyWeakref_ProxyType]
1717    added = '3.2'
1718    abi_only = true
1719[data._PyWeakref_RefType]
1720    added = '3.2'
1721    abi_only = true
1722[function._Py_BuildValue_SizeT]
1723    added = '3.2'
1724    abi_only = true
1725[function._Py_CheckRecursiveCall]
1726    added = '3.2'
1727    abi_only = true
1728[function._Py_Dealloc]
1729    added = '3.2'
1730    abi_only = true
1731[data._Py_EllipsisObject]
1732    added = '3.2'
1733    abi_only = true
1734[data._Py_FalseStruct]
1735    added = '3.2'
1736    abi_only = true
1737[data._Py_NoneStruct]
1738    added = '3.2'
1739    abi_only = true
1740[data._Py_NotImplementedStruct]
1741    added = '3.2'
1742    abi_only = true
1743[data._Py_SwappedOp]
1744    added = '3.2'
1745    abi_only = true
1746[data._Py_TrueStruct]
1747    added = '3.2'
1748    abi_only = true
1749[function._Py_VaBuildValue_SizeT]
1750    added = '3.2'
1751    abi_only = true
1752
1753# Old buffer protocol support (deprecated)
1754
1755[function.PyObject_AsCharBuffer]
1756    added = '3.2'
1757    abi_only = true
1758[function.PyObject_AsReadBuffer]
1759    added = '3.2'
1760    abi_only = true
1761[function.PyObject_AsWriteBuffer]
1762    added = '3.2'
1763    abi_only = true
1764[function.PyObject_CheckReadBuffer]
1765    added = '3.2'
1766    abi_only = true
1767
1768# Flags are implicitly part of the ABI:
1769
1770[const.Py_TPFLAGS_DEFAULT]
1771    added = '3.2'
1772[const.Py_TPFLAGS_BASETYPE]
1773    added = '3.2'
1774[const.Py_TPFLAGS_HAVE_GC]
1775    added = '3.2'
1776
1777[const.METH_VARARGS]
1778    added = '3.2'
1779[const.METH_NOARGS]
1780    added = '3.2'
1781[const.METH_O]
1782    added = '3.2'
1783[const.METH_CLASS]
1784    added = '3.2'
1785[const.METH_STATIC]
1786    added = '3.2'
1787[const.METH_COEXIST]
1788    added = '3.2'
1789# METH_STACKLESS is undocumented
1790# METH_FASTCALL is not part of limited API.
1791
1792# The following are defined in private headers, but historically
1793# they were exported as part of the stable ABI.
1794[function.PyMarshal_ReadObjectFromString]
1795    added = '3.2'
1796    abi_only = true
1797[function.PyMarshal_WriteObjectToString]
1798    added = '3.2'
1799    abi_only = true
1800[function.PyMember_GetOne]
1801    added = '3.2'  # Before 3.12, available in "structmember.h"
1802[function.PyMember_SetOne]
1803    added = '3.2'  # Before 3.12, available in "structmember.h"
1804
1805# TLS api is deprecated; superseded by TSS API
1806
1807[function.PyThread_ReInitTLS]
1808    added = '3.2'
1809[function.PyThread_create_key]
1810    added = '3.2'
1811[function.PyThread_delete_key]
1812    added = '3.2'
1813[function.PyThread_set_key_value]
1814    added = '3.2'
1815[function.PyThread_get_key_value]
1816    added = '3.2'
1817[function.PyThread_delete_key_value]
1818    added = '3.2'
1819[function.PyThread_acquire_lock]
1820    added = '3.2'
1821[function.PyThread_acquire_lock_timed]
1822    added = '3.2'
1823[function.PyThread_allocate_lock]
1824    added = '3.2'
1825[function.PyThread_exit_thread]
1826    added = '3.2'
1827[function.PyThread_free_lock]
1828    added = '3.2'
1829[function.PyThread_get_stacksize]
1830    added = '3.2'
1831[function.PyThread_get_thread_ident]
1832    added = '3.2'
1833[function.PyThread_get_thread_native_id]
1834    added = '3.2'
1835    ifdef = 'PY_HAVE_THREAD_NATIVE_ID'
1836[function.PyThread_init_thread]
1837    added = '3.2'
1838[function.PyThread_release_lock]
1839    added = '3.2'
1840[function.PyThread_set_stacksize]
1841    added = '3.2'
1842[function.PyThread_start_new_thread]
1843    added = '3.2'
1844
1845# The following were added in PC/python3.def in Python 3.3:
1846# 7800f75827b1be557be16f3b18f5170fbf9fae08
1847# 9c56409d3353b8cd4cfc19e0467bbe23fd34fc92
1848# 75aeaa9b18667219bbacbc58ba6efecccef9dfbd
1849
1850[function.PyState_AddModule]
1851    added = '3.3'
1852[function.PyState_RemoveModule]
1853    added = '3.3'
1854[function.PyType_FromSpecWithBases]
1855    added = '3.3'
1856[function._PyArg_Parse_SizeT]
1857    added = '3.3'
1858    abi_only = true
1859[function._PyArg_ParseTuple_SizeT]
1860    added = '3.3'
1861    abi_only = true
1862[function._PyArg_ParseTupleAndKeywords_SizeT]
1863    added = '3.3'
1864    abi_only = true
1865[function._PyArg_VaParse_SizeT]
1866    added = '3.3'
1867    abi_only = true
1868[function._PyArg_VaParseTupleAndKeywords_SizeT]
1869    added = '3.3'
1870    abi_only = true
1871[function.PyThread_GetInfo]
1872    added = '3.3'
1873
1874# The following were added in PC/python3.def in Python 3.4:
1875# 3ba3a3ee56c142e93d6bbe20ff6bf939212a30f0
1876
1877[function.PyCFunction_New]
1878    added = '3.4'
1879[function.PyType_GetSlot]
1880    added = '3.4'
1881
1882# The following were added in PC/python3.def in Python 3.5:
1883# 11d7b1423fc44d764eba7065ea5eba58ed748b21
1884# f3b73ad51da3097d7915796fdc62608b1ab90c0a
1885
1886[function.PyErr_FormatV]
1887    added = '3.5'
1888[function.PyModuleDef_Init]
1889    added = '3.5'
1890[data.PyModuleDef_Type]
1891    added = '3.5'
1892
1893# New slots in 3.5:
1894# d51374ed78a3e3145911a16cdf3b9b84b3ba7d15 - Matrix multiplication (PEP 465)
1895# 7544508f0245173bff5866aa1598c8f6cce1fc5f - Async iterators (PEP 492)
1896# 0969a9f8abcf98bb43ea77b1dd050426adcfb4f7 - tp_finalize
1897
1898[const.Py_nb_matrix_multiply]
1899    added = '3.5'
1900[const.Py_nb_inplace_matrix_multiply]
1901    added = '3.5'
1902[const.Py_am_await]
1903    added = '3.5'
1904[const.Py_am_aiter]
1905    added = '3.5'
1906[const.Py_am_anext]
1907    added = '3.5'
1908[const.Py_tp_finalize]
1909    added = '3.5'
1910
1911# The following were added in PC/python3.def in Python 3.6:
1912
1913[function.Py_FinalizeEx]
1914    added = '3.6'
1915
1916[function.PyOS_FSPath]
1917    added = '3.6'
1918[function.PyErr_ResourceWarning]
1919    added = '3.6'
1920[function.PyErr_SetImportErrorSubclass]
1921    added = '3.6'
1922[data.PyExc_ModuleNotFoundError]
1923    added = '3.6'
1924
1925# The following were added in PC/python3.def in Python 3.6.1 and 3.5.3/3.5.4:
1926
1927[function.PyCodec_NameReplaceErrors]
1928    added = '3.7'  # (and 3.6.1 and 3.5.3)
1929[function.PyErr_GetExcInfo]
1930    added = '3.7'  # (and 3.6.1 and 3.5.3)
1931[function.PyErr_SetExcInfo]
1932    added = '3.7'  # (and 3.6.1 and 3.5.3)
1933[function.PyErr_SetFromErrnoWithFilenameObjects]
1934    added = '3.7'  # (and 3.6.1 and 3.5.3)
1935[function.PyErr_SetImportError]
1936    added = '3.7'  # (and 3.6.1 and 3.5.3)
1937[function.PyErr_SyntaxLocationEx]
1938    added = '3.7'  # (and 3.6.1 and 3.5.3)
1939[data.PyExc_BlockingIOError]
1940    added = '3.7'  # (and 3.6.1 and 3.5.3)
1941[data.PyExc_BrokenPipeError]
1942    added = '3.7'  # (and 3.6.1 and 3.5.3)
1943[data.PyExc_ChildProcessError]
1944    added = '3.7'  # (and 3.6.1 and 3.5.3)
1945[data.PyExc_ConnectionAbortedError]
1946    added = '3.7'  # (and 3.6.1 and 3.5.3)
1947[data.PyExc_ConnectionError]
1948    added = '3.7'  # (and 3.6.1 and 3.5.3)
1949[data.PyExc_ConnectionRefusedError]
1950    added = '3.7'  # (and 3.6.1 and 3.5.3)
1951[data.PyExc_ConnectionResetError]
1952    added = '3.7'  # (and 3.6.1 and 3.5.3)
1953[data.PyExc_FileExistsError]
1954    added = '3.7'  # (and 3.6.1 and 3.5.3)
1955[data.PyExc_FileNotFoundError]
1956    added = '3.7'  # (and 3.6.1 and 3.5.3)
1957[data.PyExc_InterruptedError]
1958    added = '3.7'  # (and 3.6.1 and 3.5.3)
1959[data.PyExc_IsADirectoryError]
1960    added = '3.7'  # (and 3.6.1 and 3.5.3)
1961[data.PyExc_NotADirectoryError]
1962    added = '3.7'  # (and 3.6.1 and 3.5.3)
1963[data.PyExc_PermissionError]
1964    added = '3.7'  # (and 3.6.1 and 3.5.3)
1965[data.PyExc_ProcessLookupError]
1966    added = '3.7'  # (and 3.6.1 and 3.5.3)
1967[data.PyExc_RecursionError]
1968    added = '3.7'  # (and 3.6.1 and 3.5.3)
1969[data.PyExc_ResourceWarning]
1970    added = '3.7'  # (and 3.6.1 and 3.5.3)
1971[data.PyExc_StopAsyncIteration]
1972    added = '3.7'  # (and 3.6.1 and 3.5.3)
1973[data.PyExc_TimeoutError]
1974    added = '3.7'  # (and 3.6.1 and 3.5.3)
1975[function.PyImport_AddModuleObject]
1976    added = '3.7'  # (and 3.6.1 and 3.5.3)
1977[function.PyImport_ExecCodeModuleObject]
1978    added = '3.7'  # (and 3.6.1 and 3.5.3)
1979[function.PyImport_ImportFrozenModuleObject]
1980    added = '3.7'  # (and 3.6.1 and 3.5.3)
1981[function.PyImport_ImportModuleLevelObject]
1982    added = '3.7'  # (and 3.6.1 and 3.5.3)
1983[function.PyMem_Calloc]
1984    added = '3.7'  # (and 3.6.1 and 3.5.3)
1985[function.PyMemoryView_FromMemory]
1986    added = '3.7'  # (and 3.6.1 and 3.5.3)
1987[function.PyModule_AddFunctions]
1988    added = '3.7'  # (and 3.6.1 and 3.5.3)
1989[function.PyModule_ExecDef]
1990    added = '3.7'  # (and 3.6.1 and 3.5.3)
1991[function.PyModule_FromDefAndSpec2]
1992    added = '3.7'  # (and 3.6.1 and 3.5.3)
1993[function.PyModule_GetNameObject]
1994    added = '3.7'  # (and 3.6.1 and 3.5.3)
1995[function.PyModule_NewObject]
1996    added = '3.7'  # (and 3.6.1 and 3.5.3)
1997[function.PyModule_SetDocString]
1998    added = '3.7'  # (and 3.6.1 and 3.5.3)
1999[function.PyNumber_InPlaceMatrixMultiply]
2000    added = '3.7'  # (and 3.6.1 and 3.5.3)
2001[function.PyNumber_MatrixMultiply]
2002    added = '3.7'  # (and 3.6.1 and 3.5.3)
2003[function.PyObject_Calloc]
2004    added = '3.7'  # (and 3.6.1 and 3.5.3)
2005[function.PyObject_GenericSetDict]
2006    added = '3.7'  # (and 3.6.1 and 3.5.3)
2007[function.PySys_AddXOption]
2008    added = '3.7'  # (and 3.6.1 and 3.5.3)
2009    abi_only = true
2010[function.PySys_GetXOptions]
2011    added = '3.7'  # (and 3.6.1 and 3.5.3)
2012[function.PyUnicode_AsUCS4]
2013    added = '3.7'  # (and 3.6.1 and 3.5.3)
2014[function.PyUnicode_AsUCS4Copy]
2015    added = '3.7'  # (and 3.6.1 and 3.5.3)
2016[function.PyUnicode_AsWideCharString]
2017    added = '3.7'  # (and 3.6.1 and 3.5.3)
2018[function.PyUnicode_DecodeLocale]
2019    added = '3.7'  # (and 3.6.1 and 3.5.3)
2020[function.PyUnicode_DecodeLocaleAndSize]
2021    added = '3.7'  # (and 3.6.1 and 3.5.3)
2022[function.PyUnicode_EncodeLocale]
2023    added = '3.7'  # (and 3.6.1 and 3.5.3)
2024[function.PyUnicode_FindChar]
2025    added = '3.7'  # (and 3.6.1 and 3.5.3)
2026[function.PyUnicode_GetLength]
2027    added = '3.7'  # (and 3.6.1 and 3.5.3)
2028[function.PyUnicode_ReadChar]
2029    added = '3.7'  # (and 3.6.1 and 3.5.3)
2030[function.PyUnicode_Substring]
2031    added = '3.7'  # (and 3.6.1 and 3.5.3)
2032[function.PyUnicode_WriteChar]
2033    added = '3.7'  # (and 3.6.1 and 3.5.3)
2034[function.Py_DecodeLocale]
2035    added = '3.7'  # (and 3.6.1 and 3.5.3)
2036[function.Py_EncodeLocale]
2037    added = '3.7'  # (and 3.6.1 and 3.5.3)
2038[function.Py_SetPath]
2039    added = '3.7'  # (and 3.6.1 and 3.5.3)
2040    abi_only = true
2041[function.PyErr_SetExcFromWindowsErr]
2042    added = '3.7'  # (and 3.6.1 and 3.5.3)
2043    ifdef = 'MS_WINDOWS'
2044[function.PyErr_SetExcFromWindowsErrWithFilename]
2045    added = '3.7'  # (and 3.6.1 and 3.5.3)
2046    ifdef = 'MS_WINDOWS'
2047[function.PyErr_SetExcFromWindowsErrWithFilenameObject]
2048    added = '3.7'  # (and 3.6.1 and 3.5.3)
2049    ifdef = 'MS_WINDOWS'
2050[function.PyErr_SetExcFromWindowsErrWithFilenameObjects]
2051    added = '3.7'  # (and 3.6.1 and 3.5.3)
2052    ifdef = 'MS_WINDOWS'
2053[function.PyErr_SetFromWindowsErr]
2054    added = '3.7'  # (and 3.6.1 and 3.5.3)
2055    ifdef = 'MS_WINDOWS'
2056[function.PyErr_SetFromWindowsErrWithFilename]
2057    added = '3.7'  # (and 3.6.1 and 3.5.3)
2058    ifdef = 'MS_WINDOWS'
2059[data.PyExc_WindowsError]
2060    added = '3.7'  # (and 3.6.1 and 3.5.3)
2061    ifdef = 'MS_WINDOWS'
2062[function.PyOS_CheckStack]
2063    added = '3.7'  # (and 3.6.1 and 3.5.3)
2064    ifdef = 'USE_STACKCHECK'
2065[function.PyUnicode_AsMBCSString]
2066    added = '3.7'  # (and 3.6.1 and 3.5.3)
2067    ifdef = 'MS_WINDOWS'
2068[function.PyUnicode_DecodeCodePageStateful]
2069    added = '3.7'  # (and 3.6.1 and 3.5.3)
2070    ifdef = 'MS_WINDOWS'
2071[function.PyUnicode_DecodeMBCS]
2072    added = '3.7'  # (and 3.6.1 and 3.5.3)
2073    ifdef = 'MS_WINDOWS'
2074[function.PyUnicode_DecodeMBCSStateful]
2075    added = '3.7'  # (and 3.6.1 and 3.5.3)
2076    ifdef = 'MS_WINDOWS'
2077[function.PyUnicode_EncodeCodePage]
2078    added = '3.7'  # (and 3.6.1 and 3.5.3)
2079    ifdef = 'MS_WINDOWS'
2080
2081# 3.5.4:
2082[function.PySlice_AdjustIndices]
2083    added = '3.7'  # (and 3.6.1 and 3.5.4)
2084[function.PySlice_Unpack]
2085    added = '3.7'  # (and 3.6.1 and 3.5.4)
2086
2087# The following were added in PC/python3.def in Python 3.7:
2088
2089[function.PyInterpreterState_GetID]
2090    added = '3.7'
2091[function.PyThread_tss_alloc]
2092    added = '3.7'
2093[function.PyThread_tss_create]
2094    added = '3.7'
2095[function.PyThread_tss_delete]
2096    added = '3.7'
2097[function.PyThread_tss_free]
2098    added = '3.7'
2099[function.PyThread_tss_get]
2100    added = '3.7'
2101[function.PyThread_tss_is_created]
2102    added = '3.7'
2103[function.PyThread_tss_set]
2104    added = '3.7'
2105[function.PyOS_BeforeFork]
2106    added = '3.7'
2107    ifdef = 'HAVE_FORK'
2108[function.PyOS_AfterFork_Parent]
2109    added = '3.7'
2110    ifdef = 'HAVE_FORK'
2111[function.PyOS_AfterFork_Child]
2112    added = '3.7'
2113    ifdef = 'HAVE_FORK'
2114
2115# New method flags in 3.7 (PEP 590):
2116
2117[const.METH_FASTCALL]
2118    added = '3.7'
2119[const.METH_METHOD]
2120    added = '3.7'
2121
2122# The following were added in PC/python3.def in Python 3.8:
2123
2124[function.PyImport_GetModule]
2125    added = '3.8'
2126[data.Py_UTF8Mode]
2127    added = '3.8'
2128[function.PyExceptionClass_Name]
2129    added = '3.8'
2130[function.PyIndex_Check]
2131    added = '3.8'
2132[function.PyIter_Check]
2133    added = '3.8'
2134[data.PyDictRevIterItem_Type]
2135    added = '3.8'
2136[data.PyDictRevIterKey_Type]
2137    added = '3.8'
2138[data.PyDictRevIterValue_Type]
2139    added = '3.8'
2140[function.PyInterpreterState_GetDict]
2141    added = '3.8'
2142[function.Py_BytesMain]
2143    added = '3.8'
2144
2145# New type flag (PEP 590):
2146
2147[const.Py_TPFLAGS_METHOD_DESCRIPTOR]
2148    added = '3.8'
2149
2150# The following were added in PC/python3.def in Python 3.9:
2151
2152[function.Py_EnterRecursiveCall]
2153    added = '3.9'
2154[function.Py_LeaveRecursiveCall]
2155    added = '3.9'
2156[function.Py_GenericAlias]
2157    added = '3.9'
2158[data.Py_GenericAliasType]
2159    added = '3.9'
2160[function.PyCMethod_New]
2161    added = '3.9'
2162[function.PyInterpreterState_Get]
2163    added = '3.9'
2164[function.PyObject_GC_IsFinalized]
2165    added = '3.9'
2166[function.PyObject_GC_IsTracked]
2167    added = '3.9'
2168
2169# The following were added in PC/python3.def in Python 3.10:
2170
2171[function.Py_GetArgcArgv]
2172    added = '3.10'
2173    abi_only = true
2174[function.PyIter_Send]
2175    added = '3.10'
2176[function.PyUnicode_AsUTF8AndSize]
2177    added = '3.10'
2178[function.PyObject_GenericGetDict]
2179    added = '3.10'
2180[function.Py_NewRef]
2181    added = '3.10'
2182[function.Py_XNewRef]
2183    added = '3.10'
2184[function.PyModule_AddType]
2185    added = '3.10'
2186[function.PyType_FromModuleAndSpec]
2187    added = '3.10'
2188[function.PyType_GetModule]
2189    added = '3.10'
2190[function.PyType_GetModuleState]
2191    added = '3.10'
2192[function.PyFrame_GetLineNumber]
2193    added = '3.10'
2194[function.PyFrame_GetCode]
2195    added = '3.10'
2196[function.PyObject_CallNoArgs]
2197    added = '3.10'
2198[function.PyThreadState_GetFrame]
2199    added = '3.10'
2200[function.PyThreadState_GetID]
2201    added = '3.10'
2202[function.PyThreadState_GetInterpreter]
2203    added = '3.10'
2204[function.PyModule_AddObjectRef]
2205    added = '3.10'
2206[data.Py_FileSystemDefaultEncodeErrors]
2207    added = '3.10'
2208[function.PyCodec_Unregister]
2209    added = '3.10'
2210[function.PyErr_SetInterruptEx]
2211    added = '3.10'
2212[function.Py_Is]
2213    added = '3.10'
2214[function.Py_IsTrue]
2215    added = '3.10'
2216[function.Py_IsFalse]
2217    added = '3.10'
2218[function.Py_IsNone]
2219    added = '3.10'
2220[function._Py_IncRef]
2221    added = '3.10'
2222    abi_only = true
2223[function._Py_DecRef]
2224    added = '3.10'
2225    abi_only = true
2226[function.PyAIter_Check]
2227    added = '3.10'
2228[function.PyObject_GetAIter]
2229    added = '3.10'
2230[data.PyExc_EncodingWarning]
2231    added = '3.10'
2232
2233# Support for Stable ABI in debug builds
2234
2235[data._Py_RefTotal]
2236    added = '3.10'
2237    ifdef = 'Py_REF_DEBUG'
2238    abi_only = true
2239[function._Py_NegativeRefcount]
2240    added = '3.10'
2241    ifdef = 'Py_REF_DEBUG'
2242    abi_only = true
2243
2244# New slots in 3.10:
2245
2246[const.Py_am_send]
2247    added = '3.10'
2248
2249
2250# New GC control functions in Py3.10 (https://bugs.python.org/issue28254)
2251
2252[function.PyGC_Disable]
2253    added = '3.10'
2254[function.PyGC_Enable]
2255    added = '3.10'
2256[function.PyGC_IsEnabled]
2257    added = '3.10'
2258
2259# Add new C API in Python 3.11
2260
2261[function.PyType_GetName]
2262    added = '3.11'
2263[function.PyType_GetQualName]
2264    added = '3.11'
2265[data.PyStructSequence_UnnamedField]
2266    added = '3.11'
2267
2268# Add stable Py_buffer API in Python 3.11 (https://bugs.python.org/issue45459)
2269[struct.Py_buffer]
2270    added = '3.11'
2271    struct_abi_kind = 'full-abi'
2272[function.PyObject_CheckBuffer]
2273    added = '3.11'
2274[function.PyObject_GetBuffer]
2275    added = '3.11'
2276[function.PyBuffer_GetPointer]
2277    added = '3.11'
2278[function.PyBuffer_SizeFromFormat]
2279    added = '3.11'
2280[function.PyBuffer_ToContiguous]
2281    added = '3.11'
2282[function.PyBuffer_FromContiguous]
2283    added = '3.11'
2284[function.PyObject_CopyData]
2285    added = '3.11'
2286[function.PyBuffer_IsContiguous]
2287    added = '3.11'
2288[function.PyBuffer_FillContiguousStrides]
2289    added = '3.11'
2290[function.PyBuffer_FillInfo]
2291    added = '3.11'
2292[function.PyBuffer_Release]
2293    added = '3.11'
2294[function.PyMemoryView_FromBuffer]
2295    added = '3.11'
2296
2297# Constants for Py_buffer API added to this list in Python 3.11.1 (https://github.com/python/cpython/issues/98680)
2298# (they were available with 3.11.0)
2299[const.PyBUF_MAX_NDIM]
2300    added = '3.11'
2301[const.PyBUF_SIMPLE]
2302    added = '3.11'
2303[const.PyBUF_WRITABLE]
2304    added = '3.11'
2305[const.PyBUF_FORMAT]
2306    added = '3.11'
2307[const.PyBUF_ND]
2308    added = '3.11'
2309[const.PyBUF_STRIDES]
2310    added = '3.11'
2311[const.PyBUF_C_CONTIGUOUS]
2312    added = '3.11'
2313[const.PyBUF_F_CONTIGUOUS]
2314    added = '3.11'
2315[const.PyBUF_ANY_CONTIGUOUS]
2316    added = '3.11'
2317[const.PyBUF_INDIRECT]
2318    added = '3.11'
2319[const.PyBUF_CONTIG]
2320    added = '3.11'
2321[const.PyBUF_CONTIG_RO]
2322    added = '3.11'
2323[const.PyBUF_STRIDED]
2324    added = '3.11'
2325[const.PyBUF_STRIDED_RO]
2326    added = '3.11'
2327[const.PyBUF_RECORDS]
2328    added = '3.11'
2329[const.PyBUF_RECORDS_RO]
2330    added = '3.11'
2331[const.PyBUF_FULL]
2332    added = '3.11'
2333[const.PyBUF_FULL_RO]
2334    added = '3.11'
2335[const.PyBUF_READ]
2336    added = '3.11'
2337[const.PyBUF_WRITE]
2338    added = '3.11'
2339
2340
2341# (Detailed comments aren't really needed for further entries: from here on
2342#  we can use version control logs.)
2343
2344[data.Py_Version]
2345    added = '3.11'
2346[function.PyErr_GetHandledException]
2347    added = '3.11'
2348[function.PyErr_SetHandledException]
2349    added = '3.11'
2350
2351[function.PyType_FromMetaclass]
2352    added = '3.12'
2353[const.Py_TPFLAGS_HAVE_VECTORCALL]
2354    added = '3.12'
2355[function.PyVectorcall_NARGS]
2356    added = '3.12'
2357[function.PyVectorcall_Call]
2358    added = '3.12'
2359[function.PyErr_GetRaisedException]
2360    added = '3.12'
2361[function.PyErr_SetRaisedException]
2362    added = '3.12'
2363[function.PyException_GetArgs]
2364    added = '3.12'
2365[function.PyException_SetArgs]
2366    added = '3.12'
2367
2368[typedef.vectorcallfunc]
2369    added = '3.12'
2370[function.PyObject_Vectorcall]
2371    added = '3.12'
2372[function.PyObject_VectorcallMethod]
2373    added = '3.12'
2374[macro.PY_VECTORCALL_ARGUMENTS_OFFSET]
2375    added = '3.12'
2376[typedef.getbufferproc]
2377    added = '3.12'
2378[typedef.releasebufferproc]
2379    added = '3.12'
2380
2381[const.Py_T_BYTE]
2382    added = '3.12'  # Before 3.12, available in "structmember.h" w/o Py_ prefix
2383[const.Py_T_SHORT]
2384    added = '3.12'  # Before 3.12, available in "structmember.h" w/o Py_ prefix
2385[const.Py_T_INT]
2386    added = '3.12'  # Before 3.12, available in "structmember.h" w/o Py_ prefix
2387[const.Py_T_LONG]
2388    added = '3.12'  # Before 3.12, available in "structmember.h" w/o Py_ prefix
2389[const.Py_T_LONGLONG]
2390    added = '3.12'  # Before 3.12, available in "structmember.h" w/o Py_ prefix
2391[const.Py_T_UBYTE]
2392    added = '3.12'  # Before 3.12, available in "structmember.h" w/o Py_ prefix
2393[const.Py_T_UINT]
2394    added = '3.12'  # Before 3.12, available in "structmember.h" w/o Py_ prefix
2395[const.Py_T_USHORT]
2396    added = '3.12'  # Before 3.12, available in "structmember.h" w/o Py_ prefix
2397[const.Py_T_ULONG]
2398    added = '3.12'  # Before 3.12, available in "structmember.h" w/o Py_ prefix
2399[const.Py_T_ULONGLONG]
2400    added = '3.12'  # Before 3.12, available in "structmember.h" w/o Py_ prefix
2401[const.Py_T_PYSSIZET]
2402    added = '3.12'  # Before 3.12, available in "structmember.h" w/o Py_ prefix
2403[const.Py_T_FLOAT]
2404    added = '3.12'  # Before 3.12, available in "structmember.h" w/o Py_ prefix
2405[const.Py_T_DOUBLE]
2406    added = '3.12'  # Before 3.12, available in "structmember.h" w/o Py_ prefix
2407[const.Py_T_BOOL]
2408    added = '3.12'  # Before 3.12, available in "structmember.h" w/o Py_ prefix
2409[const.Py_T_STRING]
2410    added = '3.12'  # Before 3.12, available in "structmember.h" w/o Py_ prefix
2411[const.Py_T_STRING_INPLACE]
2412    added = '3.12'  # Before 3.12, available in "structmember.h" w/o Py_ prefix
2413[const.Py_T_CHAR]
2414    added = '3.12'  # Before 3.12, available in "structmember.h" w/o Py_ prefix
2415[const.Py_T_OBJECT_EX]
2416    added = '3.12'  # Before 3.12, available in "structmember.h" w/o Py_ prefix
2417[const.Py_READONLY]
2418    added = '3.12'  # Before 3.12, available in "structmember.h" w/o Py_ prefix
2419[const.Py_AUDIT_READ]
2420    added = '3.12'  # Before 3.12, available in "structmember.h"
2421
2422[function.PyObject_GetTypeData]
2423    added = '3.12'
2424[function.PyType_GetTypeDataSize]
2425    added = '3.12'
2426[const.Py_RELATIVE_OFFSET]
2427    added = '3.12'
2428[const.Py_TPFLAGS_ITEMS_AT_END]
2429    added = '3.12'
2430[function.PyImport_AddModuleRef]
2431    added = '3.13'
2432[function.PyWeakref_GetRef]
2433    added = '3.13'
2434[function.PyObject_DelAttr]
2435    added = '3.13'
2436[function.PyObject_DelAttrString]
2437    added = '3.13'
2438[function.PyObject_GetOptionalAttr]
2439    added = '3.13'
2440[function.PyObject_GetOptionalAttrString]
2441    added = '3.13'
2442[function.PyMapping_GetOptionalItem]
2443    added = '3.13'
2444[function.PyMapping_GetOptionalItemString]
2445    added = '3.13'
2446[function.PyModule_Add]
2447    added = '3.13'
2448[function.PyDict_GetItemRef]
2449    added = '3.13'
2450[function.PyDict_GetItemStringRef]
2451    added = '3.13'
2452[function.PyLong_AsInt]
2453    added = '3.13'
2454[function.PyObject_HasAttrWithError]
2455    added = '3.13'
2456[function.PyObject_HasAttrStringWithError]
2457    added = '3.13'
2458[function.PyMapping_HasKeyWithError]
2459    added = '3.13'
2460[function.PyMapping_HasKeyStringWithError]
2461    added = '3.13'
2462[function.Py_IsFinalizing]
2463    added = '3.13'
2464[function.PyUnicode_EqualToUTF8]
2465    added = '3.13'
2466[function.PyUnicode_EqualToUTF8AndSize]
2467    added = '3.13'
2468[function.PyMem_RawMalloc]
2469    added = '3.13'
2470[function.PyMem_RawCalloc]
2471    added = '3.13'
2472[function.PyMem_RawRealloc]
2473    added = '3.13'
2474[function.PyMem_RawFree]
2475    added = '3.13'
2476[function.PySys_Audit]
2477    added = '3.13'
2478[function.PySys_AuditTuple]
2479    added = '3.13'
2480[function._Py_SetRefcnt]
2481    added = '3.13'
2482    abi_only = true
2483[function.PyList_GetItemRef]
2484    added = '3.13'
2485[typedef.PyCFunctionFast]
2486    added = '3.13'
2487    # "abi-only" since 3.10.  (Callback type names aren't used in C code,
2488    # but this function signature was expected with METH_FASTCALL.)
2489[typedef.PyCFunctionFastWithKeywords]
2490    added = '3.13'
2491    # "abi-only" since 3.10.  (Same story as PyCFunctionFast.)
2492[function.PyType_GetFullyQualifiedName]
2493    added = '3.13'
2494[function.PyType_GetModuleName]
2495    added = '3.13'
2496[function.Py_GetConstant]
2497    added = '3.13'
2498[function.Py_GetConstantBorrowed]
2499    added = '3.13'
2500[function.PyType_GetModuleByDef]
2501    added = '3.13'
2502[function.PyEval_GetFrameBuiltins]
2503    added = '3.13'
2504[function.PyEval_GetFrameGlobals]
2505    added = '3.13'
2506[function.PyEval_GetFrameLocals]
2507    added = '3.13'
2508