we could not use CFFI for that part because we wanted a lot of additional stuff for our core bindings.
For example, multiple dispatch – with CFFI, we have to build a multiple dispatch in python, which we did not want.
Also, a few other things like autogeneration of good errors etc.
See this code pointer for an example: https://github.com/pytorch/pytorch/blob/master/setup.py#L92-L99 85