My notion of a no framework framework is working out great. It's liberating thinking of the .py or .ipynb files as the config file of a framework situation—freeing you from the compulsion of immediately writing functions and classes, starting down the slipper slope of writing just such a new framework. Most frameworks make heave use of "config files" written in the host language that must go through a secondary interpreter written in that language in order to carry out instructions per the framework's conventions. But you have to limit yourself to only the subset of that host language's capabilities to only what that framework allows and supports. With the noframework approach, you can be as expressive as you like, getting down to the business of generating the effects you like.