holoviz / panel

Panel: The powerful data exploration & web app framework for Python
https://panel.holoviz.org
BSD 3-Clause "New" or "Revised" License
4.64k stars 504 forks source link

RangeXY raising exception with panel serve but not in Notebook #882

Closed MarcSkovMadsen closed 4 years ago

MarcSkovMadsen commented 4 years ago

COPIED FROM https://github.com/holoviz/holoviews/issues/4132#issue-539649259 AS I POSTED IN THE WRONG REPO.

Hi

I'm trying to make a reactive dashboard. I now have my dashboard working great in a Jupyter Notebook. But when I run it via 'panel serve' it raises the below 'exception'.

Maybe it's me that misunderstands something. I've tried many different ways of implementing this as cannot find a reference example.

$ python -m panel serve 'src\pages\gallery\kickstarter_dashboard\main.py' --dev --show
C:\repos\private\awesome-panel\.venv\lib\site-packages\bokeh\command\util.py:127: UserWarning:
It looks like you might be running the main.py of a directory app directly.
If this is the case, to enable the features of directory style apps, you must
call "bokeh serve" on the directory instead. For example:

    bokeh serve my_app_dir/

If this is not the case, renaming main.py will suppress this warning.

  warnings.warn(DIRSTYLE_MAIN_WARNING)
2019-12-18 12:20:25,354 Starting Bokeh server version 1.4.0 (running on Tornado 5.1.1)
2019-12-18 12:20:25,356 User authentication hooks NOT provided (default user enabled)
2019-12-18 12:20:25,361 Bokeh app running at: http://localhost:5006/main
2019-12-18 12:20:25,362 Starting Bokeh server with process id: 8752
2019-12-18 12:20:31,342 WebSocket connection opened
2019-12-18 12:20:31,344 ServerConnection created
C:\repos\private\awesome-panel\src\pages\gallery\kickstarter_dashboard\main.py:208: UserWarning: Boolean Series key will be reindexed to match DataFrame index.
  sub_df = sub_df[x_filter]
WARNING:param.ParamMethod01391: HoloViews pane model Figure(id='1371', ...) could not be replaced with new model Figure(id='1819', ...), ensure that the parent is not modified at the same time the panel is being updated.
2019-12-18 12:20:36,987 HoloViews pane model Figure(id='1371', ...) could not be replaced with new model Figure(id='1819', ...), ensure that the parent is not modified at the same time the panel is being updated.
2019-12-18 12:20:37,347 Exception in callback functools.partial(<function wrap.<locals>.null_wrapper at 0x0000005386226C18>,
<Future finished exception=TypeError("Constant parameter 'x_range' cannot be modified")>)
Traceback (most recent call last):
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\tornado\ioloop.py", line 758, in _run_callback
    ret = callback()
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\tornado\stack_context.py", line 300, in null_wrapper
    return fn(*args, **kwargs)
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\tornado\ioloop.py", line 779, in _discard_future_result
    future.result()
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\tornado\gen.py", line 1147, in run
    yielded = self.gen.send(value)
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\bokeh\server\session.py", line 70, in _needs_document_lock_wrapper
    result = yield yield_for_all_futures(func(self, *args, **kwargs))
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\bokeh\server\session.py", line 191, in with_document_locked
    return func(*args, **kwargs)
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\bokeh\document\document.py", line 1127, in wrapper
    return doc._with_self_as_curdoc(invoke)
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\bokeh\document\document.py", line 1113, in _with_self_as_curdoc
    return f()
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\bokeh\document\document.py", line 1126, in invoke
    return f(*args, **kwargs)
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\bokeh\document\document.py", line 916, in remove_then_invoke
    return callback(*args, **kwargs)
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\panel\viewable.py", line 714, in _change_event
    self._process_events(events)
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\panel\viewable.py", line 704, in _process_events
    self.set_param(**self._process_property_change(events))
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\param\parameterized.py", line 1219, in inner
    return fn(*args, **kwargs)
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\param\parameterized.py", line 2573, in set_param
    return self_or_cls.param.set_param(*args,**kwargs)
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\param\parameterized.py", line 1365, in set_param
    self_._batch_call_watchers()
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\param\parameterized.py", line 1480, in _batch_call_watchers
    watcher.fn(*events)
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\panel\param.py", line 345, in link_widget
    self.object.set_param(**{p_name: change.new})
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\param\parameterized.py", line 1219, in inner
    return fn(*args, **kwargs)
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\param\parameterized.py", line 2573, in set_param
    return self_or_cls.param.set_param(*args,**kwargs)
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\param\parameterized.py", line 1358, in set_param
    setattr(self_or_cls, k, v)
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\param\parameterized.py", line 294, in _f
    instance_param.__set__(obj, val)
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\param\parameterized.py", line 296, in _f
    return f(self, obj, val)
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\param\parameterized.py", line 838, in __set__
    raise TypeError("Constant parameter '%s' cannot be modified"%self.name)
TypeError: Constant parameter 'x_range' cannot be modified
C:\repos\private\awesome-panel\src\pages\gallery\kickstarter_dashboard\main.py:208: UserWarning: Boolean Series key will be reindexed to match DataFrame index.
  sub_df = sub_df[x_filter]
WARNING:param.ParamMethod01391: HoloViews pane model Figure(id='1819', ...) could not be replaced with new model Figure(id='1976', ...), ensure that the parent is not modified at the same time the panel is being updated.
2019-12-18 12:20:37,858 HoloViews pane model Figure(id='1819', ...) could not be replaced with new model Figure(id='1976', ...), ensure that the parent is not modified at the same time the panel is being updated.
WARNING:param.ParamMethod01391: HoloViews pane model Figure(id='1819', ...) could not be replaced with new model Figure(id='2072', ...), ensure that the parent is not modified at the same time the panel is being updated.
2019-12-18 12:20:37,940 HoloViews pane model Figure(id='1819', ...) could not be replaced with new model Figure(id='2072', ...), ensure that the parent is not modified at the same time the panel is being updated.
2019-12-18 12:20:38,271 Exception in callback functools.partial(<function wrap.<locals>.null_wrapper at 0x0000005386226EE8>,
<Future finished exception=TypeError("Constant parameter 'x_range' cannot be modified")>)
Traceback (most recent call last):
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\tornado\ioloop.py", line 758, in _run_callback
    ret = callback()
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\tornado\stack_context.py", line 300, in null_wrapper
    return fn(*args, **kwargs)
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\tornado\ioloop.py", line 779, in _discard_future_result
    future.result()
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\tornado\gen.py", line 1147, in run
    yielded = self.gen.send(value)
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\bokeh\server\session.py", line 70, in _needs_document_lock_wrapper
    result = yield yield_for_all_futures(func(self, *args, **kwargs))
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\bokeh\server\session.py", line 191, in with_document_locked
    return func(*args, **kwargs)
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\bokeh\document\document.py", line 1127, in wrapper
    return doc._with_self_as_curdoc(invoke)
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\bokeh\document\document.py", line 1113, in _with_self_as_curdoc
    return f()
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\bokeh\document\document.py", line 1126, in invoke
    return f(*args, **kwargs)
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\bokeh\document\document.py", line 916, in remove_then_invoke
    return callback(*args, **kwargs)
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\panel\viewable.py", line 714, in _change_event
    self._process_events(events)
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\panel\viewable.py", line 704, in _process_events
    self.set_param(**self._process_property_change(events))
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\param\parameterized.py", line 1219, in inner
    return fn(*args, **kwargs)
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\param\parameterized.py", line 2573, in set_param
    return self_or_cls.param.set_param(*args,**kwargs)
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\param\parameterized.py", line 1365, in set_param
    self_._batch_call_watchers()
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\param\parameterized.py", line 1480, in _batch_call_watchers
    watcher.fn(*events)
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\panel\param.py", line 345, in link_widget
    self.object.set_param(**{p_name: change.new})
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\param\parameterized.py", line 1219, in inner
    return fn(*args, **kwargs)
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\param\parameterized.py", line 2573, in set_param
    return self_or_cls.param.set_param(*args,**kwargs)
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\param\parameterized.py", line 1358, in set_param
    setattr(self_or_cls, k, v)
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\param\parameterized.py", line 294, in _f
    instance_param.__set__(obj, val)
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\param\parameterized.py", line 296, in _f
    return f(self, obj, val)
  File "C:\repos\private\awesome-panel\.venv\lib\site-packages\param\parameterized.py", line 838, in __set__
    raise TypeError("Constant parameter '%s' cannot be modified"%self.name)
TypeError: Constant parameter 'x_range' cannot be modified

Interrupted, shutting down
(.venv)

I've attached the source code, notebook and data.

issue_rangexy.zip

and a small video that shows it works fine in the notebook. But when you start interacting with panel serve it raises the exception.

note_book_works

MarcSkovMadsen commented 4 years ago

Thanks