posit-dev / py-shinywidgets

Render ipywidgets inside a PyShiny app
MIT License
41 stars 2 forks source link

`register_widget()` should be deprecated #127

Open schloerke opened 5 months ago

schloerke commented 5 months ago

Given #119, register_widget() does not follow the Shiny rendering pattern.

Current (inside server body):

    map = create_map(layout=ipywidgets.Layout(width="100%", height="100%"))
    map_widget = register_widget("map", map)
    map_widget # do stuff

Proposed:

    map_val = create_map(layout=ipywidgets.Layout(width="100%", height="100%"))

    @render_widget
    def map():
        return map_val

    map.widget # do stuff

While the Current approach is tighter and requires less lines, calling a register method doesn't tell me that it's going to be rendered to the UI.

With more render methods with full typing in the near future, I'd recommend that register_widget be deprecated in favor of the standard Shiny approach.