Thanks. I will just use separate column data sources for streaming and patching data for now then.
Something like this Panel model
class DataFrameWithStreamAndPatchBaseWidget(Widget):
value = param.DataFrame(
doc="""A pandas.DataFrame
Please note when specifying a Pandas.Dataframe we currently have some narrow requirements
""",
)
_source = param.ClassSelector(
class_=ColumnDataSource,
doc="""Used to transfer the `value` efficiently to frontend. \
Should always be in sync with value""",
)
## Need this because ColumnDataSource not provides streamed value only streamed events
## https://discourse.bokeh.org/t/how-do-i-get-the-new-data-only-when-i-stream-via-a-columndatasource/6186/2
_source_stream = param.ClassSelector(
class_=ColumnDataSource,
doc="""Used to transfer a streamed (i.e appended) `value` efficiently to frontend.""",
)
## Need this because ColumnDataSource not provides patched value only patched events
## https://discourse.bokeh.org/t/how-do-i-get-the-new-data-only-when-i-stream-via-a-columndatasource/6186/2
_source_patch = param.ClassSelector(
class_=ColumnDataSource,
doc="""Used to transfer a patched (i.e updated) `value` efficiently to frontend.""",
)
_rename = {
"value": None,
"_source": "source",
"_source_stream": "source_stream",
"_source_patch": "source_patch",
}