Skip to content

Commit 0ef35ad

Browse files
committed
Revert to reactive property approach. Only provide decorators for packages that need coercion
1 parent 5764d44 commit 0ef35ad

File tree

6 files changed

+159
-317
lines changed

6 files changed

+159
-317
lines changed

shinywidgets/__init__.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
from ._render_widget import (
1111
render_altair,
1212
render_bokeh,
13-
render_leaflet,
1413
render_plotly,
1514
render_pydeck,
1615
render_widget,
@@ -22,7 +21,6 @@
2221
"render_widget",
2322
"render_altair",
2423
"render_bokeh",
25-
"render_leaflet",
2624
"render_plotly",
2725
"render_pydeck",
2826
# Reactive read second

shinywidgets/_as_widget.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ def as_widget(x: object) -> Widget:
3535

3636
def as_widget_altair(x: object) -> Optional[Widget]:
3737
try:
38-
from altair import JupyterChart
38+
from altair import JupyterChart # pyright: ignore[reportMissingTypeStubs]
3939
except ImportError:
4040
raise RuntimeError(
4141
"Failed to import altair.JupyterChart (do you need to pip install -U altair?)"
@@ -55,9 +55,9 @@ def as_widget_bokeh(x: object) -> Optional[Widget]:
5555
# TODO: ideally we'd do this in set_layout_defaults() but doing
5656
# `BokehModel(x)._model.sizing_mode = "stretch_both"`
5757
# there, but that doesn't seem to work??
58-
from bokeh.plotting import figure
58+
from bokeh.plotting import figure # pyright: ignore[reportMissingTypeStubs]
5959

60-
if isinstance(x, figure):
60+
if isinstance(x, figure): # type: ignore
6161
x.sizing_mode = "stretch_both" # pyright: ignore[reportGeneralTypeIssues]
6262

6363
return BokehModel(x) # type: ignore
@@ -67,7 +67,7 @@ def as_widget_plotly(x: object) -> Optional[Widget]:
6767
# Don't need a try import here since this won't be called unless x is a plotly object
6868
import plotly.graph_objects as go # pyright: ignore[reportMissingTypeStubs]
6969

70-
if not isinstance(x, go.Figure):
70+
if not isinstance(x, go.Figure): # type: ignore
7171
raise TypeError(
7272
f"Don't know how to coerce {x} into a plotly.graph_objects.FigureWidget object."
7373
)

shinywidgets/_render_widget.py

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,50 +2,41 @@
22

33
from typing import TYPE_CHECKING
44

5-
from ipywidgets.widgets import Widget # pyright: ignore[reportMissingTypeStubs]
6-
75
if TYPE_CHECKING:
8-
from altair import JupyterChart
6+
from altair import JupyterChart # pyright: ignore[reportMissingTypeStubs]
97
from jupyter_bokeh import BokehModel # pyright: ignore[reportMissingTypeStubs]
108
from plotly.graph_objects import ( # pyright: ignore[reportMissingTypeStubs]
119
FigureWidget,
1210
)
1311
from pydeck.widget import DeckGLWidget # pyright: ignore[reportMissingTypeStubs]
14-
15-
# Leaflet Widget class is the same as a Widget
16-
# from ipyleaflet import Widget as LeafletWidget
12+
else:
13+
JupyterChart = BokehModel = FigureWidget = DeckGLWidget = object
1714

1815
from ._render_widget_base import ValueT, WidgetT, render_widget_base
1916

2017
__all__ = (
2118
"render_widget",
2219
"render_altair",
2320
"render_bokeh",
24-
"render_leaflet",
2521
"render_plotly",
2622
"render_pydeck",
2723
)
2824

29-
30-
class render_widget(render_widget_base[ValueT, Widget]):
25+
# In the generic case, just relay whatever the user's return type is
26+
# since we're not doing any coercion
27+
class render_widget(render_widget_base[WidgetT, WidgetT]):
3128
...
3229

33-
30+
# Package specific renderers that require coercion (via as_widget())
31+
# NOTE: the types on these classes should mirror what as_widget() does
3432
class render_altair(render_widget_base[ValueT, JupyterChart]):
3533
...
3634

37-
3835
class render_bokeh(render_widget_base[ValueT, BokehModel]):
3936
...
4037

41-
42-
class render_leaflet(render_widget_base[WidgetT, WidgetT]):
43-
...
44-
45-
4638
class render_plotly(render_widget_base[ValueT, FigureWidget]):
4739
...
4840

49-
5041
class render_pydeck(render_widget_base[ValueT, DeckGLWidget]):
5142
...

0 commit comments

Comments
 (0)