As a maintainer
I want to remove the kaleido<1.3 cap and adopt the current kaleido
So that we stay on the maintained image-export backend.
🌍 Background
#939 capped kaleido>=1.0.0,<1.3 in docs/pyproject.toml because kaleido 1.3.0 raises TypeError: Type is not JSON serializable: Timestamp when exporting plotly figures whose band x-values are a Python list of pandas Timestamp objects — the quantile-fill pattern in ForecastTimeSeriesPlotter. This broke the docs deployment (static PNG export of executed tutorials).
Minimal repro:
import pandas as pd, plotly.graph_objects as go, plotly.io as pio
idx = pd.date_range("2024-01-01", periods=5, freq="h")
fig = go.Figure(go.Scatter(x=list(idx)+list(idx[::-1]), y=[1,2,3,4,5,5,4,3,2,1], fill="toself"))
pio.to_image(fig, format="png") # OK on kaleido 1.2.0, TypeError on 1.3.0
❗ Priority: Low. kaleido 1.2.0 works; this is staying current.
✅ Acceptance criteria
📄 Notes: The plotter-side fix is preferable — it removes the fragility regardless of kaleido version.
As a maintainer
I want to remove the
kaleido<1.3cap and adopt the current kaleidoSo that we stay on the maintained image-export backend.
🌍 Background
#939 capped
kaleido>=1.0.0,<1.3indocs/pyproject.tomlbecause kaleido 1.3.0 raisesTypeError: Type is not JSON serializable: Timestampwhen exporting plotly figures whose band x-values are a Python list of pandasTimestampobjects — the quantile-fill pattern inForecastTimeSeriesPlotter. This broke the docs deployment (static PNG export of executed tutorials).Minimal repro:
❗ Priority: Low. kaleido 1.2.0 works; this is staying current.
✅ Acceptance criteria
ForecastTimeSeriesPlotterpass band x-values as aDatetimeIndex/ pre-converted datetimes instead of a raw list ofTimestamp(more robust, likely the real fix), or confirm kaleido >1.3.x fixed the regression upstream.<1.3cap indocs/pyproject.toml.poe docsbuilds cleanly.📄 Notes: The plotter-side fix is preferable — it removes the fragility regardless of kaleido version.