diff --git a/panel/tests/widgets/test_tables.py b/panel/tests/widgets/test_tables.py index bece13fef44..2e8aaade0e4 100644 --- a/panel/tests/widgets/test_tables.py +++ b/panel/tests/widgets/test_tables.py @@ -275,6 +275,22 @@ def test_tabulator_none_value(document, comm): assert model.columns == [] +def test_tabulator_mixed_nat_datetime_serializes(): + from bokeh.core.json_encoder import serialize_json + from bokeh.core.serialization import Serializer + + df = pd.DataFrame({"date": [pd.NaT, 12]}) + df["date"] = pd.to_datetime(df["date"]).dt.date + + table = Tabulator(df) + _, data = table._get_data() + + ser = Serializer() + payload = ser.encode(data) + + serialize_json(payload) + + def test_tabulator_update_none_value(document, comm, df_mixed): table = Tabulator(value=df_mixed) diff --git a/panel/widgets/tables.py b/panel/widgets/tables.py index 698db5e3c49..7147d9fd818 100644 --- a/panel/widgets/tables.py +++ b/panel/widgets/tables.py @@ -714,7 +714,7 @@ def _process_df_and_convert_to_cds(self, df: pd.DataFrame) -> tuple[pd.DataFrame # Ensure NaT serialization is enabled try: - Serializer.register(pd.NaT, lambda _, __: None) # type: ignore + Serializer.register(type(pd.NaT), lambda _, __: None) # type: ignore except AssertionError: pass