llvmlite provides a Python binding to LLVM for use in Numba.

The old llvmpy binding exposes a lot of LLVM APIs but the mapping of
C++-style memory management to Python is error prone. Numba and many
JIT compilers do not need a full LLVM API. Only the IR builder,
optimizer, and JIT compiler APIs are necessary.

llvmlite is a project originally tailored for Numba's needs, using the
following approach:

* A small C wrapper around the parts of the LLVM C++ API we need that
  are not already exposed by the LLVM C API.
* A ctypes Python wrapper around the C API.
* A pure Python implementation of the subset of the LLVM IR builder
  that we need for Numba.

Homepage:
https://llvmlite.readthedocs.io/
