refactoring several pieces of the client and the Python wrapper to make them more usable.
Adding a Python library wrapper using pyo3 BREAKING CHANGE: