Stateful Hot-Reload/REPL Workflows that I used/use:
I have used Emacs+Jupyter in the past, also played around with Jurigged, and currently I use the 'Send to Repl' functionality available in PyCharm.
Still, there are rough edges,
1. Rough: No (ergonomic) expression-evaluation available at the moment, hopefully tree-sitter based tools will solve this in the future.
2. Rougher: In the general case, I can't redefine a function/class. The 'global' namespace can be used to 'some extent' to achieve 'deterministic redefinition', but the code strays away from idiomatic Python.
3. Roughest: I have found Python performance to always be a concern. Maybe I am biased towards C/C++/Rust for performance purposes, aka Optimal Resource Utilization.
The only thing I can agree on here is performance, but I already included that aspect before. I don't see how existing expression evaluation could be more or less "ergonomic." It is what it is and it's already far better than anything for C/C++. And since classes and functions are all objects in python and there are no private members, everything is trivial to redefine in practice. I do this constantly.
How so? My experience is exactly the opposite.