Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Errors are a complete indirection at what problems are #997

Open
chipkent opened this issue Nov 7, 2024 · 1 comment
Open

Errors are a complete indirection at what problems are #997

chipkent opened this issue Nov 7, 2024 · 1 comment
Labels
bug Something isn't working question Further information is requested triage

Comments

@chipkent
Copy link
Member

chipkent commented Nov 7, 2024

I've been iterating on some code. The errors that are coming from ui are complete misdirections. Below I have some broken code plus the error that came with it. I made some changes towards resolving the problem, and then I get a different cryptic error. In the end, my code was completely broken, and it had to do with passing in the wrong number of arguments and doing other dumb things. If you iterate through trying to fix the code below, you will see that the error messages are complete misdirections for the user.

Code:

# TODO: pydoc
import logging
from typing import Tuple, Callable, Any
from deephaven import ui, dtypes
from deephaven.table import Table, PartitionedTable
from deephaven.plot.figure import Figure


# This function is to avoid UI bugs in rendering tables with non-primitive columns
# TODO: https://github.com/deephaven/deephaven-plugins/issues/701
# TODO: https://github.com/deephaven/deephaven-core/issues/5708
def _retain_primitive_cols(name: str, table: Table) -> Table:
    """Return a new table with only primitive columns.

    This function is to avoid UI bugs in rendering tables with non-primitive columns.

    Args:
        name (str): The name of the table.
        table (Table): The table to filter.
    """
    def retain_col(col):
        retain = col.data_type.is_primitive or col.data_type in [dtypes.string, dtypes.bool_, dtypes.Instant]

        if not retain:
            logging.warning(f"REMOVING COLUMN FOR VISUALIZATION: table={name} column={col.name} type={col.data_type}.")

        return retain

    return table.view([col.name for col in table.columns if retain_col(col)])


def null_note(t: Table, note: str, func: Callable[[], Any]) -> Any:
    """ Return a note if the table is empty; otherwise, return the element from the function. """
    return func() if t else ui.text(note)


# TODO: this is commented out because it fails if it is not
# @ui.component
def _symbol_picker(table: PartitionedTable, label: str = "Symbol") -> Tuple[ui.Element, str]:
    symbol_table = ui.use_memo(lambda: table.table.view("symbol").select_distinct().sort("symbol"), [])
    symbol, set_symbol = ui.use_state("")

    pick_table = ui.picker(
        symbol_table,
        label=label,
        on_change=set_symbol,
        selected_key=symbol,
    )

    text = ui.text_field(
        value=symbol,
        on_change=set_symbol,
        label=label,
    )

    return ui.flex(pick_table, text), symbol


@ui.component
def _tab_table_view(tables: dict[str, PartitionedTable], symbol: str) -> ui.BaseElement:

    def make_component(table):
        t = table.get_constituent([symbol])
        return null_note(t, f"No data for {symbol}", lambda: t)

    return ui.stack([ui.panel(make_component(table), title=name) for name, table in tables.items()])


@ui.component
def plot_shares(shares: Table) -> Figure:
    p = Figure()

    for col in shares.columns:
        if "shares_" in col.name and "dilution_factor" not in col.name:
            p = p.plot_xy(col.name, shares, x="timestamp", y=col.name)

    return p.show()

@ui.component
def plot_prices(prices: Table) -> Figure:
    return (
        Figure()
        .plot_xy("close_split_div_adj", prices, x="timestamp", y="close_split_div_adj")
        .y_axis(log=True)
        .show()
    )

@ui.component
def plot_fundamentals(fundamentals: Table, series: str):
    return (
        Figure()
        .plot_xy(series, fundamentals, x="timestamp", y=series)
        .show()
    )


@ui.component
def plot_model_preds(model_preds: Table, symbol: str, active: bool) -> Figure:
    #TODO: get rid of active as an input?
    mp = model_preds.where("active" if active else "!active")

    if mp.size == 0:
        return ui.text(f"No {'active' if active else 'inactive'} model predictions for {symbol}")

    mp = mp.update_view([
                "pred_price_sdp = pred_price + pred_price_stdev_uncorr",  # TODO: which stdev?
                "pred_price_sdm = pred_price - pred_price_stdev_uncorr",  # TODO: which stdev?
            ])

    p = Figure()

    p = p.plot_xy("Pred", t=mp, x="pred_time", y="pred_price",
                      y_low="pred_price_sdm", y_high="pred_price_sdp", by=["full_name"])

    # # TODO: *** meta_preds
    # # TODO: select meta pred
    # meta = (
    #     meta_preds
    #     .where(["stdev_calc == `uncorr`", "meta_weights_func == `sd`"])
    #     .update_view([
    #             "pred_price_sdp = pred_price + pred_price_stdev",
    #             "pred_price_sdm = pred_price - pred_price_stdev",
    #         ]))
    # 
    # p = p.plot_xy("Meta", t=meta, x="pred_time", y="pred_price", y_low="pred_price_sdm", y_high="pred_price_sdp") #TODO: add full name?, by=["full_name"])

    p = p.y_axis(log=True)
    return p.show()


@ui.component
def plot_meta_preds(meta_preds: Table, symbol: str) -> Figure:

    if meta_preds.size == 0:
        return ui.text(f"No {'active' if active else 'inactive'} meta predictions for {symbol}")

    meta = (
        meta_preds
        .where(["stdev_calc == `uncorr`", "meta_weights_func == `sd`"])
        .update_view([
            "full_name = stdev_calc + ` ` + meta_weights_func",
            "pred_price_sdp = pred_price + pred_price_stdev",
            "pred_price_sdm = pred_price - pred_price_stdev",
        ])
    )

    p = Figure()

    p = p.plot_xy("Meta", t=meta, x="pred_time", y="pred_price", y_low="pred_price_sdm", y_high="pred_price_sdp", by=["full_name"])

    p = p.y_axis(log=True)
    return p.show()


@ui.component
def _input_plots(tables: dict[str, PartitionedTable], symbol: str) -> ui.BaseElement:

    # TODO: this doesn't work --> need to have calls to the same number of hooks
    # if not symbol:
    #     return ui.panel(ui.text("Select a symbol"))

    # TODO: filter on date

    shares = tables["shares"].get_constituent([symbol])
    prices = tables["prices"].get_constituent([symbol])
    fundamentals = tables["fundamentals"].get_constituent([symbol])
    model_preds = tables["model_preds"].get_constituent([symbol])
    meta_preds = tables["meta_preds"].get_constituent([symbol])

    error_msg = f"No data for {symbol}"
    outputs = []

    outputs.append(ui.panel(null_note(shares, error_msg, lambda: plot_shares(shares)), title="shares"))
    outputs.append(ui.panel(null_note(prices, error_msg, lambda: plot_prices(prices)), title="prices"))

    for col in tables["fundamentals"].constituent_table_columns:
        if col.name in ["date", "timestamp", "symbol"]:
            continue

        outputs.append(ui.panel(null_note(fundamentals, error_msg, lambda: plot_fundamentals(fundamentals, col.name)), title=col.name))

    outputs.append(ui.panel(null_note(model_preds, error_msg, lambda: plot_model_preds(model_preds, meta_preds, symbol, active=True)), title="model_preds_active"))
    outputs.append(ui.panel(null_note(model_preds, error_msg, lambda: plot_model_preds(model_preds, meta_preds, symbol, active=False)), title="model_preds_inactive"))
    outputs.append(ui.panel(null_note(meta_preds, error_msg, lambda: plot_meta_preds(meta_preds, symbol)), title="meta_preds"))

    return ui.stack(
        *outputs,
    )


@ui.component
def my_panel(tables: dict[str, PartitionedTable]) -> ui.BaseElement:
    model_preds = tables["model_preds"]
    symbol_picker, symbol = _symbol_picker(model_preds, label="Symbol")

    # TODO: thinks this should be fine --> Doesn't work because new stuff is garbage at the bottom
    # if not symbol:
    #     return ui.column(symbol_picker)

    ttv = _tab_table_view(tables, symbol)
    ip = _input_plots(tables, symbol)

    return ui.column(
        symbol_picker,
        ttv,
        ip,
    )


def my_dashboard(tables: dict[str, Table]) -> ui.DashboardElement:
    part_tables = {name: _retain_primitive_cols(name, table).partition_by("symbol") for name, table in tables.items()}
    return ui.dashboard(my_panel(part_tables)) # TODO: Bad type hint or should fail

if __name__ == "__main__":
    from cecropia.lynchmunger import cli
    globals().update(cli.debug_values)
    dashboard = my_dashboard(cli.debug_values)

Error:

TypeError

plot_model_preds() got multiple values for argument 'active'

Traceback (most recent call last):
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/object_types/ElementMessageStream.py", line 189, in _render
    node = self._renderer.render(self._element)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 153, in render
    return _render_element(element, self._context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 123, in _render_element
    props = _render_dict_in_open_context(props, context)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 103, in _render_dict_in_open_context
    return {key: _render_child_item(value, context, key) for key, value in item.items()}
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 45, in _render_child_item
    return _render_element(item, parent_context.get_child_context(key))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 123, in _render_element
    props = _render_dict_in_open_context(props, context)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 103, in _render_dict_in_open_context
    return {key: _render_child_item(value, context, key) for key, value in item.items()}
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 45, in _render_child_item
    return _render_element(item, parent_context.get_child_context(key))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 123, in _render_element
    props = _render_dict_in_open_context(props, context)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 103, in _render_dict_in_open_context
    return {key: _render_child_item(value, context, key) for key, value in item.items()}
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 27, in _render_child_item
    return _render_list(item, parent_context.get_child_context(index_key))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 68, in _render_list
    _render_child_item(value, context, str(key))
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 45, in _render_child_item
    return _render_element(item, parent_context.get_child_context(key))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 123, in _render_element
    props = _render_dict_in_open_context(props, context)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 103, in _render_dict_in_open_context
    return {key: _render_child_item(value, context, key) for key, value in item.items()}
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 45, in _render_child_item
    return _render_element(item, parent_context.get_child_context(key))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 123, in _render_element
    props = _render_dict_in_open_context(props, context)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 103, in _render_dict_in_open_context
    return {key: _render_child_item(value, context, key) for key, value in item.items()}
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 27, in _render_child_item
    return _render_list(item, parent_context.get_child_context(index_key))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 68, in _render_list
    _render_child_item(value, context, str(key))
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 45, in _render_child_item
    return _render_element(item, parent_context.get_child_context(key))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 123, in _render_element
    props = _render_dict_in_open_context(props, context)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 103, in _render_dict_in_open_context
    return {key: _render_child_item(value, context, key) for key, value in item.items()}
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 45, in _render_child_item
    return _render_element(item, parent_context.get_child_context(key))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 120, in _render_element
    props = element.render(context)
            ^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/elements/FunctionElement.py", line 43, in render
    children = self._render()
               ^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/components/make_component.py", line 23, in <lambda>
    return FunctionElement(component_type, lambda: func(*args, **kwargs), key=key)
                                                   ^^^^^^^^^^^^^^^^^^^^^
TypeError: plot_model_preds() got multiple values for argument 'active'

Screenshot:
image

NameError

name 'active' is not defined

Traceback (most recent call last):
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/object_types/ElementMessageStream.py", line 189, in _render
    node = self._renderer.render(self._element)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 153, in render
    return _render_element(element, self._context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 123, in _render_element
    props = _render_dict_in_open_context(props, context)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 103, in _render_dict_in_open_context
    return {key: _render_child_item(value, context, key) for key, value in item.items()}
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 45, in _render_child_item
    return _render_element(item, parent_context.get_child_context(key))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 123, in _render_element
    props = _render_dict_in_open_context(props, context)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 103, in _render_dict_in_open_context
    return {key: _render_child_item(value, context, key) for key, value in item.items()}
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 45, in _render_child_item
    return _render_element(item, parent_context.get_child_context(key))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 123, in _render_element
    props = _render_dict_in_open_context(props, context)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 103, in _render_dict_in_open_context
    return {key: _render_child_item(value, context, key) for key, value in item.items()}
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 27, in _render_child_item
    return _render_list(item, parent_context.get_child_context(index_key))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 68, in _render_list
    _render_child_item(value, context, str(key))
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 45, in _render_child_item
    return _render_element(item, parent_context.get_child_context(key))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 123, in _render_element
    props = _render_dict_in_open_context(props, context)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 103, in _render_dict_in_open_context
    return {key: _render_child_item(value, context, key) for key, value in item.items()}
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 45, in _render_child_item
    return _render_element(item, parent_context.get_child_context(key))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 123, in _render_element
    props = _render_dict_in_open_context(props, context)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 103, in _render_dict_in_open_context
    return {key: _render_child_item(value, context, key) for key, value in item.items()}
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 27, in _render_child_item
    return _render_list(item, parent_context.get_child_context(index_key))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 68, in _render_list
    _render_child_item(value, context, str(key))
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 45, in _render_child_item
    return _render_element(item, parent_context.get_child_context(key))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 123, in _render_element
    props = _render_dict_in_open_context(props, context)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 103, in _render_dict_in_open_context
    return {key: _render_child_item(value, context, key) for key, value in item.items()}
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 45, in _render_child_item
    return _render_element(item, parent_context.get_child_context(key))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/renderer/Renderer.py", line 120, in _render_element
    props = element.render(context)
            ^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/elements/FunctionElement.py", line 43, in render
    children = self._render()
               ^^^^^^^^^^^^^^
  File "/Users/chip/dev/ccpy/venv3.12-v2/lib/python3.12/site-packages/deephaven/ui/components/make_component.py", line 23, in <lambda>
    return FunctionElement(component_type, lambda: func(*args, **kwargs), key=key)
                                                   ^^^^^^^^^^^^^^^^^^^^^
  File "<string>", line 100, in plot_model_preds
NameError: name 'active' is not defined
@chipkent chipkent added bug Something isn't working triage labels Nov 7, 2024
@vbabich vbabich added the question Further information is requested label Nov 12, 2024
@vbabich
Copy link
Contributor

vbabich commented Nov 12, 2024

@chipkent What error message would you expect in this situation? The first TypeError seems pretty accurate.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working question Further information is requested triage
Projects
None yet
Development

No branches or pull requests

2 participants