Commit Graph

47 Commits

Author SHA1 Message Date
Christian Tismer
ea62ce7f4f bpo-33738: Fix macros which contradict PEP 384 (GH-7477)
During development of the limited API support for PySide,
we saw an error in a macro that accessed a type field.

This patch fixes the 7 errors in the Python headers.
Macros which were not written as capitals were implemented
as function.

To do the necessary analysis again, a script was included that
parses all headers and looks for "->tp_" in serctions which can
be reached with active limited API.

It is easily possible to call this script as a test.

Error listing:

../../Include/objimpl.h:243
#define PyObject_IS_GC(o) (PyType_IS_GC(Py_TYPE(o)) && \
    (Py_TYPE(o)->tp_is_gc == NULL || Py_TYPE(o)->tp_is_gc(o)))
Action: commented only

../../Include/objimpl.h:362
#define PyType_SUPPORTS_WEAKREFS(t) ((t)->tp_weaklistoffset > 0)
Action: commented only

../../Include/objimpl.h:364
#define PyObject_GET_WEAKREFS_LISTPTR(o) \
    ((PyObject **) (((char *) (o)) + Py_TYPE(o)->tp_weaklistoffset))
Action: commented only

../../Include/pyerrors.h:143
#define PyExceptionClass_Name(x) \
     ((char *)(((PyTypeObject*)(x))->tp_name))
Action: implemented function

../../Include/abstract.h:593
#define PyIter_Check(obj) \
    ((obj)->ob_type->tp_iternext != NULL && \
     (obj)->ob_type->tp_iternext != &_PyObject_NextNotImplemented)
Action: implemented function

../../Include/abstract.h:713
#define PyIndex_Check(obj)                              \
    ((obj)->ob_type->tp_as_number != NULL &&            \
     (obj)->ob_type->tp_as_number->nb_index != NULL)
Action: implemented function

../../Include/abstract.h:924
#define PySequence_ITEM(o, i)\
    ( Py_TYPE(o)->tp_as_sequence->sq_item(o, i) )
Action: commented only
2018-06-09 14:32:25 -04:00
Serhiy Storchaka
4e29f566e8 Add missed details of the C API introduced in 3.7. (GH-7047)
* Set the limited API version for PyImport_GetModule and PyOS_*Fork
  functions.
* Add PyImport_GetModule and Py_UTF8Mode in PC/python3.def.
* Add several functions in Doc/data/refcounts.dat.
2018-05-22 20:59:42 +03:00
Ned Deily
5489bdad51 Start of 3.8.0a0 2018-01-31 17:44:09 -05:00
xdegaye
56d1f5ca32 bpo-30697: Fix PyErr_NormalizeException() when no memory (GH-2327) 2017-10-26 15:09:06 +02:00
Masayuki Yamamoto
731e189014 bpo-25658: Implement PEP 539 for Thread Specific Storage (TSS) API (GH-1362)
See PEP 539 for details.

Highlights of changes:

- Add Thread Specific Storage (TSS) API
- Document the Thread Local Storage (TLS) API as deprecated
- Update code that used TLS API to use TSS API
2017-10-06 20:41:34 +10:00
Eric Snow
e377416c10 bpo-29102: Add a unique ID to PyInterpreterState. (#1639) 2017-05-22 19:46:40 -07:00
Serhiy Storchaka
6e08baf12d Issue #27867: Function PySlice_GetIndicesEx() is deprecated and replaced with
a macro if Py_LIMITED_API is not set or set to the value between 0x03050400
and 0x03060000 (not including) or 0x03060100 or higher.  Added functions
PySlice_Unpack() and PySlice_AdjustIndices().
2017-01-25 13:27:44 +02:00
Serhiy Storchaka
512c57cb72 Issue #27867: Function PySlice_GetIndicesEx() is replaced with a macro if
Py_LIMITED_API is not set or set to the value between 0x03050400
and 0x03060000 (not including) or 0x03060100 or higher.
2017-01-25 13:25:52 +02:00
Serhiy Storchaka
b2a5be0763 Issue #27867: Function PySlice_GetIndicesEx() is replaced with a macro if
Py_LIMITED_API is not set or set to the value between 0x03050400
and 0x03060000 (not including) or 0x03060100 or higher.
2017-01-25 13:23:05 +02:00
Serhiy Storchaka
683cb8347a Issue #23903: Added missed Windows-specific names to PC/python3.def. 2016-12-27 17:44:18 +02:00
Serhiy Storchaka
32665009c3 Issue #23903: Added missed Windows-specific names to PC/python3.def. 2016-12-27 17:41:07 +02:00
Serhiy Storchaka
e721be1faa Issue #23903: Added missed Windows-specific names to PC/python3.def. 2016-12-27 17:38:16 +02:00
Serhiy Storchaka
fd54a74539 Issue #23903: Added missed names to PC/python3.def. 2016-12-27 12:17:41 +02:00
Serhiy Storchaka
c70081cfc1 Issue #23903: Added missed names to PC/python3.def. 2016-12-27 12:13:05 +02:00
Serhiy Storchaka
6664e8c741 Issue #23903: Added missed names to PC/python3.def. 2016-12-27 12:10:58 +02:00
Serhiy Storchaka
b6dc37e88d Issue #23903: Fixed errors and remove non-existing names in python3.def. 2016-12-27 11:51:56 +02:00
Serhiy Storchaka
26f15a430f Issue #23903: Fixed errors and remove non-existing names in python3.def. 2016-12-27 11:51:15 +02:00
Serhiy Storchaka
d54d3d3d90 Issue #23903: Fixed errors and remove non-existing names in python3.def. 2016-12-27 11:49:53 +02:00
Serhiy Storchaka
1dd81012e9 Sort and remove duplicates from PC/python3.def (issue #23903). 2016-12-23 22:13:29 +02:00
Serhiy Storchaka
0dc1fa6d22 Sort and remove duplicates from PC/python3.def (issue #23903). 2016-12-23 22:11:57 +02:00
Serhiy Storchaka
ab23347916 Sort and remove duplicates from PC/python3.def (issue #23903). 2016-12-23 22:09:48 +02:00
Ned Deily
4829bc6619 Bump to 3.7.0a0 2016-09-12 17:29:04 -04:00
Martin Panter
b4ce1fc31b Issue #5319: New Py_FinalizeEx() API to exit with status 120 on failure 2015-11-30 03:18:29 +00:00
Eric Snow
06a6a83826 Issue #16991: Use the correct version for master. 2015-05-30 14:34:10 -06:00
Eric Snow
59b2f6803c Merge from 3.5. 2015-05-30 14:26:40 -06:00