To my understanding, the Bmi base class provided by bmipy is similar to a header file in other compiled languages. Im not aquatinted with the other features provided by bmipy, but why not support the oldest version of python possible? It appears that #45 dropped support for python<=3.9.