This works works with numpy arrays as all numpy array objects support the buffer protocol.  Calling Julia from Python is a bit different as all you get back is a memory view but this can be used by numpy with `np.frombuffer` or calling `np.asarray` similar to what you do using Cython.  This builds the numpy specific info struct using the datatype / stride info of the buffer without copying the underlying buffer.