widgetti / solara

A Pure Python, React-style Framework for Scaling Your Jupyter and Web Apps
https://solara.dev
MIT License
1.89k stars 138 forks source link

missing pandas requirement #35

Closed Jhsmit closed 1 year ago

Jhsmit commented 1 year ago

I have a fresh conda environment with python 3.9 on windows. I've used poetry to install solara.

When running the quickstart example:

import solara

@solara.component
def Page():
    clicks, set_clicks = solara.use_state(0)
    def increase_clicks():
        set_clicks(clicks+1)
    solara.Button(label=f"Clicked {clicks} times", on_click=increase_clicks)

I get the error:

Traceback (most recent call last):
  File "C:\Users\jhsmi\Miniconda3\envs\py39_solara\lib\site-packages\reacton\core.py", line 1457, in _render
    root_element = el.component.f(*el.args, **el.kwargs)
  File "C:\Users\jhsmi\Miniconda3\envs\py39_solara\lib\site-packages\solara\autorouting.py", line 87, in RoutingProvider
    path, set_path = solara.use_state(pathname, key="solara-context-path")
  File "C:\Users\jhsmi\Miniconda3\envs\py39_solara\lib\site-packages\reacton\core.py", line 722, in use_state
    return rc.use_state(initial, key, eq)
  File "C:\Users\jhsmi\Miniconda3\envs\py39_solara\lib\site-packages\reacton\core.py", line 1093, in use_state
    elif utils.isinstance_lazy(initial, "pandas.DataFrame"):
  File "C:\Users\jhsmi\Miniconda3\envs\py39_solara\lib\site-packages\reacton\utils.py", line 86, in isinstance_lazy
    types = [import_item(t) if isinstance(t, str) else t for t in types]
  File "C:\Users\jhsmi\Miniconda3\envs\py39_solara\lib\site-packages\reacton\utils.py", line 86, in <listcomp>
    types = [import_item(t) if isinstance(t, str) else t for t in types]
  File "C:\Users\jhsmi\Miniconda3\envs\py39_solara\lib\site-packages\reacton\utils.py", line 79, in import_item
    module = __import__(".".join(parts[:-1]), fromlist=[parts[-1]])
ModuleNotFoundError: No module named 'pandas'

While I would expect pandas to be either optional (for this example) or listed as requirement

maartenbreddels commented 1 year ago

Thanks for the report. This was a bug in Reacton, which is now fixed in https://github.com/widgetti/reacton/commit/66f5adcb642988815a4f60184c32de8a9a6688a0 this is now released in reacton 1.2.2