cpython/Tools
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
..
buildbot buildbot: pass --fail-env-changed to regrtest (#2509) 2017-06-30 16:44:08 +02:00
c-globals bpo-32297: Few misspellings found in Python source code comments. (#4803) 2017-12-14 13:04:53 +02:00
ccbench
clinic bpo-32240: Add the const qualifier to declarations of PyObject* array arguments. (#4746) 2017-12-15 13:11:11 +02:00
demo bpo-30722: Make redemo work with Python 3.6+ (GH-2311) 2017-10-23 20:10:48 +03:00
freeze bpo-31569: correct PCBuild/ case to PCbuild/ in build scripts and docs (GH-3711) 2017-09-25 17:58:10 +01:00
gdb bpo-33312: update Tools/gdb/libpython.py to match. (GH-6548) 2018-04-20 11:32:08 -07:00
i18n Remove mojibake in the locale aliases mapping. (GH-6716) 2018-05-06 10:52:38 +03:00
importbench Change some mercurial/ hg.python.org references. (#8) 2017-02-16 07:18:42 -08:00
iobench Replace KB unit with KiB (#4293) 2017-11-08 14:44:44 -08:00
msi Adds new upload script for Windows releases (GH-7268) 2018-05-30 22:13:43 -07:00
nuget bpo-31569: correct PCBuild/ case to PCbuild/ in build scripts and docs (GH-3711) 2017-09-25 17:58:10 +01:00
parser bpo-32911: Revert bpo-29463. (GH-7121) (GH-7197) 2018-05-29 12:04:55 +03:00
pynche bpo-29762: More use "raise from None". (#569) 2017-04-05 09:37:24 +03:00
scripts bpo-33738: Fix macros which contradict PEP 384 (GH-7477) 2018-06-09 14:32:25 -04:00
ssl bpo-33618: Enable TLS 1.3 in tests (GH-7079) 2018-05-23 22:24:45 +02:00
stringbench
test2to3
tz bpo-29919: Remove unused imports found by pyflakes (#137) 2017-03-27 16:05:26 +02:00
unicode update to Unicode 11.0.0 (closes bpo-33778) (GH-7439) 2018-06-06 20:14:28 -07:00
unittestgui Removed unintentional trailing spaces in text files. 2015-03-29 19:12:58 +03:00
README Change some mercurial/ hg.python.org references. (#8) 2017-02-16 07:18:42 -08:00

README

This directory contains a number of Python programs that are useful
while building or extending Python.

buildbot        Batchfiles for running on Windows buildslaves.

ccbench         A Python threads-based concurrency benchmark. (*)

demo            Several Python programming demos.

freeze          Create a stand-alone executable from a Python program.

gdb             Python code to be run inside gdb, to make it easier to
                debug Python itself (by David Malcolm).

i18n            Tools for internationalization. pygettext.py
                parses Python source code and generates .pot files,
                and msgfmt.py generates a binary message catalog
                from a catalog in text format.

iobench         Benchmark for the new Python I/O system. (*)

msi             Support for packaging Python as an MSI package on Windows.

parser          Un-parsing tool to generate code from an AST.

pynche          A Tkinter-based color editor.

scripts         A number of useful single-file programs, e.g. tabnanny.py
                by Tim Peters, which checks for inconsistent mixing of
                tabs and spaces, and 2to3, which converts Python 2 code
                to Python 3 code.

stringbench     A suite of micro-benchmarks for various operations on
                strings (both 8-bit and unicode). (*)

test2to3        A demonstration of how to use 2to3 transparently in setup.py.

unicode         Tools for generating unicodedata and codecs from unicode.org
                and other mapping files (by Fredrik Lundh, Marc-Andre Lemburg
                and Martin von Loewis).

unittestgui     A Tkinter based GUI test runner for unittest, with test
                discovery.


(*) A generic benchmark suite is maintained separately at https://github.com/python/performance