Skip to content

Commit

Permalink
fix: Better render error handling (#242)
Browse files Browse the repository at this point in the history
Fixes #227 

Testing with the examples from the issue logged errors, for example:
```
import deephaven.ui as ui

@ui.component
def hi():
    something, set_something = ui.use_state(0)
    return "Hello, " + something

h = hi()
```
```
Error rendering __main__.hi
Traceback (most recent call last):
  File "/Users/josephnumainville/Documents/deephaven-core/.venv/lib/python3.8/site-packages/deephaven/ui/object_types/ElementMessageStream.py", line 153, in _render
    node = self._renderer.render(self._element)
  File "/Users/josephnumainville/Documents/deephaven-core/.venv/lib/python3.8/site-packages/deephaven/ui/renderer/Renderer.py", line 111, in render
    return _render_element(element, self._context)
  File "/Users/josephnumainville/Documents/deephaven-core/.venv/lib/python3.8/site-packages/deephaven/ui/renderer/Renderer.py", line 84, in _render_element
    props = element.render(context)
  File "/Users/josephnumainville/Documents/deephaven-core/.venv/lib/python3.8/site-packages/deephaven/ui/elements/FunctionElement.py", line 37, in render
    children = self._render()
  File "/Users/josephnumainville/Documents/deephaven-core/.venv/lib/python3.8/site-packages/deephaven/ui/components/make_component.py", line 23, in <lambda>
    return FunctionElement(component_type, lambda: func(*args, **kwargs))
  File "<string>", line 6, in hi
TypeError: can only concatenate str (not "int") to str
```
another:
```
from deephaven import ui

@ui.component
def foo():
    return ui.bad_component()


f = foo()
```
```
Error rendering __main__.foo
Traceback (most recent call last):
  File "/Users/josephnumainville/Documents/deephaven-core/.venv/lib/python3.8/site-packages/deephaven/ui/object_types/ElementMessageStream.py", line 153, in _render
    node = self._renderer.render(self._element)
  File "/Users/josephnumainville/Documents/deephaven-core/.venv/lib/python3.8/site-packages/deephaven/ui/renderer/Renderer.py", line 111, in render
    return _render_element(element, self._context)
  File "/Users/josephnumainville/Documents/deephaven-core/.venv/lib/python3.8/site-packages/deephaven/ui/renderer/Renderer.py", line 84, in _render_element
    props = element.render(context)
  File "/Users/josephnumainville/Documents/deephaven-core/.venv/lib/python3.8/site-packages/deephaven/ui/elements/FunctionElement.py", line 37, in render
    children = self._render()
  File "/Users/josephnumainville/Documents/deephaven-core/.venv/lib/python3.8/site-packages/deephaven/ui/components/make_component.py", line 23, in <lambda>
    return FunctionElement(component_type, lambda: func(*args, **kwargs))
  File "<string>", line 5, in foo
AttributeError: module 'deephaven.ui' has no attribute 'bad_component'
```
  • Loading branch information
jnumainville authored Jan 31, 2024
1 parent f5cbb8f commit c312d43
Showing 1 changed file with 7 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,13 @@ def _render(self) -> None:
state_update()

self._is_dirty = False
node = self._renderer.render(self._element)

try:
node = self._renderer.render(self._element)
except Exception as e:
logger.exception("Error rendering %s", self._element.name)
raise e

self._send_document_update(node)

def _process_callable_queue(self) -> None:
Expand Down

0 comments on commit c312d43

Please sign in to comment.