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