panel
panel copied to clipboard
Tabulator: error when editing a table that contains a column with dtype `datetime64[ns, UTC]`
When a DataFrame contains a column with dtype datetime64[ns, UTC], editing a value in the DataFrame through the Tabulator widget raises an Exception.
import pandas as pd
import numpy as np
import panel as pn
pn.extension('tabulator')
data = {'datetime_utc': pd.date_range(start='2024-01-01', end='2024-01-05', freq='D')}
df = pd.DataFrame(data)
# Convert the dtype of the datetime column to datetime64[ns, UTC]
df['datetime_utc'] = df['datetime_utc'].dt.tz_localize('UTC')
df["test"] = ""
table = pn.widgets.Tabulator(df)
table.servable()
Traceback:
Traceback (most recent call last):
File "/home/liquetm/miniconda3/envs/dev/lib/python3.11/site-packages/pyviz_comms/__init__.py", line 340, in _handle_msg
self._on_msg(msg)
File "/home/liquetm/miniconda3/envs/dev/lib/python3.11/site-packages/panel/viewable.py", line 479, in _on_msg
doc.unhold()
File "/home/liquetm/miniconda3/envs/dev/lib/python3.11/site-packages/bokeh/document/document.py", line 776, in unhold
self.callbacks.unhold()
File "/home/liquetm/miniconda3/envs/dev/lib/python3.11/site-packages/bokeh/document/callbacks.py", line 431, in unhold
self.trigger_on_change(event)
File "/home/liquetm/miniconda3/envs/dev/lib/python3.11/site-packages/bokeh/document/callbacks.py", line 408, in trigger_on_change
invoke_with_curdoc(doc, event.callback_invoker)
File "/home/liquetm/miniconda3/envs/dev/lib/python3.11/site-packages/bokeh/document/callbacks.py", line 443, in invoke_with_curdoc
return f()
^^^
File "/home/liquetm/miniconda3/envs/dev/lib/python3.11/site-packages/bokeh/util/callback_manager.py", line 185, in invoke
callback(attr, old, new)
File "/home/liquetm/miniconda3/envs/dev/lib/python3.11/site-packages/panel/reactive.py", line 470, in _comm_change
state._handle_exception(e)
File "/home/liquetm/miniconda3/envs/dev/lib/python3.11/site-packages/panel/io/state.py", line 458, in _handle_exception
raise exception
File "/home/liquetm/miniconda3/envs/dev/lib/python3.11/site-packages/panel/reactive.py", line 468, in _comm_change
self._schedule_change(doc, comm)
File "/home/liquetm/miniconda3/envs/dev/lib/python3.11/site-packages/panel/reactive.py", line 450, in _schedule_change
self._change_event(doc)
File "/home/liquetm/miniconda3/envs/dev/lib/python3.11/site-packages/panel/reactive.py", line 446, in _change_event
self._process_events(events)
File "/home/liquetm/miniconda3/envs/dev/lib/python3.11/site-packages/panel/reactive.py", line 1306, in _process_events
self._process_data(events.pop('data'))
File "/home/liquetm/miniconda3/envs/dev/lib/python3.11/site-packages/panel/widgets/tables.py", line 1338, in _process_data
return super()._process_data(data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/liquetm/miniconda3/envs/dev/lib/python3.11/site-packages/panel/reactive.py", line 1264, in _process_data
values = self._convert_column(
^^^^^^^^^^^^^^^^^^^^^
File "/home/liquetm/miniconda3/envs/dev/lib/python3.11/site-packages/panel/reactive.py", line 1222, in _convert_column
converted = np.where(NATs, np.nan, values * 10e5).astype(dtype)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: Cannot interpret 'datetime64[ns, UTC]' as a data type