Fixes #322. Will be required for full completion of #321.
Currently a little hard to test, but this should demonstrate it if you watch the JS debug logs on WidgetHandler.
Run this Python code.
The Normal button should behave the same as latest dh.ui.
The Nested button will return a callable as the direct result of the callback function. This should allow us to do const fn = await callable(args); basically. It is not called, but there is a log from WidgetHandler after 5-10s that it was cleaned up. Or you can use the Memory tab in dev tools and click the broom icon to trigger a manual GC.
The Double Nested button will return and wrap an object containing a new callable. You can filter the browser logs for WidgetUtils and look for callable ID result string which won't have the parsed function, but will contain the object representing it as well as the other parts of the returned object.
The Not serializable button will basically do nothing except log an error in the Python console. The returned result will include that it was a serialization error to JS, but we do nothing with it.
Fixes #322. Will be required for full completion of #321.
Currently a little hard to test, but this should demonstrate it if you watch the JS debug logs on
WidgetHandler
.Run this Python code.
Normal
button should behave the same as latest dh.ui.Nested
button will return a callable as the direct result of the callback function. This should allow us to doconst fn = await callable(args);
basically. It is not called, but there is a log fromWidgetHandler
after 5-10s that it was cleaned up. Or you can use theMemory
tab in dev tools and click the broom icon to trigger a manual GC.Double Nested
button will return and wrap an object containing a new callable. You can filter the browser logs forWidgetUtils
and look forcallable ID result string
which won't have the parsed function, but will contain the object representing it as well as the other parts of the returned object.Not serializable
button will basically do nothing except log an error in the Python console. The returned result will include that it was a serialization error to JS, but we do nothing with it.