Here is a way to convert a canon CR2 image to a friendly format with rawkit, that works with its current implementation:
import numpy as np
from PIL import Image
from rawkit.raw import Raw
filename = '/path/to/your/image.cr2'
raw_image = Raw(filename)
buffered_image = np.array(raw_image.to_buffer())
image = Image.frombytes('RGB', (raw_image.metadata.width, raw_image.metadata.height), buffered_image)
image.save('/path/to/your/new/image.png', format='png')
Using a numpy array is not very elegant here but at least it works, I could not figure how to use PIL constructors to achieve the same.