Github user agoodm commented on the issue: https://github.com/apache/zeppelin/pull/1439 Thank you very much for the detailed explanation. To be precise, I made the `cmd` argument that gets registered a String solely because `Interpreter.interpret()` accepts a String representation of the code rather than actual callable objects. I think actually being able to do that (eg, use some API like ` z.registerCallback("post_exec", callback_func)` rather than `z.registerCallback("post_exec", "callback_func()") `would depend on the language that's being interpreted and what sort of libraries are available to connect it to the JVM (eg py4j with python). Nevertheless I think you have made a very compelling point. The source of my problem with my first implementation of the registry system using the `Interpreter` class was that I only considered attempting an implementation of pre/post execute from a Paragraph execution perspective. This is why I thought that I needed to broadcast changes in the registry to the `ZeppelinServer`, as I processed the registry from within the `Paragraph` class rather than from the `RemoteInterpreterServer` class. As a result of your explanation I think I understand everything a lot better now, so I'll go ahead and work on an implementation tomorrow which works exclusively through the interpreter process.
--- If your project is set up for it, you can reply to this email and have your reply appear on GitHub as well. If your project does not have this feature enabled and wishes so, or if the feature is enabled but not working, please contact infrastructure at infrastruct...@apache.org or file a JIRA ticket with INFRA. ---