not for this PR, but I feel like this signature is getting perilously large with a lot of communication going on between the exporter and PythonPrint in the form of various in-out params. We're not enforcing a clean abstraction boundary here.