On 5 August 2018 at 18:06, Ronald Oussoren <ronaldousso...@mac.com> wrote: > I’m not sure if I understand this, ctypes and cffi are used to access C APIs > without writing C code including the CPython API (see for example > <https://github.com/abarnert/superhackyinternals/blob/master/internals.py>). > > The code code below should be mostly equivalent to the Cython example posted > earlier: > > import unittest > import ctypes > from ctypes import pythonapi > > class PyObject(ctypes.Structure): > _fields_ = ( > ('ob_refcnt', ctypes.c_ssize_t), > ) > > pythonapi.PyList_Append.argtypes = [ctypes.py_object, ctypes.py_object] > > def refcount(v): > return PyObject.from_address(id(v)).ob_refcnt
The quoted code is what I was referring to in: ==== ctypes & cffi likely wouldn't help as much in the case, since they don't eliminate the need to come up with custom code for parts 3 & 4, they just let you write that logic in Python rather than C. ==== Cython has more machinery for accessing the CPython C API correctly already built in to it, whereas ctypes has no type safety at all, while cffi doesn't special case CPython's C API in particular. Cheers, Nick. -- Nick Coghlan | ncogh...@gmail.com | Brisbane, Australia _______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com