This release introduces new chart types including Donut and Waterfall, along with significant performance improvements, and numerous bug fixes.
Many thanks to @AR21SM (first contribution), @Chetansahney (first contribution), @ghostiee-11 (first contribution), @mvanhorn (first contribution), @SimonHeybrock (first contribution), @ahuang11, @Azaya89, @JulianGiles, @MarcSkovMadsen, @philippjfr, @stanwest, @thuydotm, and @hoxbro for their contributions.
Features:
- Add
Donutchart (#6848) - Add
Waterfallchart (#6847) - Add
categorical_aggoperation for linked selections with categorical Bars (#6804)
Breaking changes:
- Removal of deprecated parameters:
color_index,size_index,scaling_factor,scaling_method,size_fn(#6819) - Removal of HoloViews IPython magic, deprecated since 1.21.0 (#6781)
- Only support
HOLOVIEWSRCenvironment variable for custom config, deprecated since 1.21.0 (#6782) - Removal of old location of IPTestCase, deprecated since 1.21.0 (#6782)
- Removal of streamz support, deprecated since 1.21.0 (#6782)
- Removal of binder links (#6822)
Deprecations:
- Deprecate dash support, removal in 1.24.0 (#6867)
- Warning about deprecated old API (
holoviews.core.options.Optsandholoviews.core.dimension.redim), removal in 1.24.0 (#6863) - Deprecation of
holoviews.element.comparisonforholoviews.testing, removal in 1.25.0 (#6735)
Enhancements:
- Add baseline opt to
Barsfor floating bar charts (#6896) - Small improvements to
Spread(#6883) - Remove use of explicit
raise Exception(#6866) - Support all narwhals stable versions (#6844)
- Handle xarray
Datasetforrolling_outliers_std(#6763) - Support
selectorandds.summaryforgeom_aggregator(#6743)
Bug Fixes:
- Remove extra space in some warnings of irregular sampling (#6916)
- Allow image coordinate irregularity equal to the tolerance (#6915)
- Handle undeclared aggregator column in
_resolve_agg_column_name(#6908) - Prevent exponential custom-option id growth on re-customization (#6904)
- Interpolation curves crash on empty input (#6903)
- Add exception logging to
Stream.trigger(#6902) - Norm and vmin/vmax in raster.py (#6889)
- Datetime with HeatMap (#6877)
- Memory leak in
Stream._subscribers(#6875) - HMAC-sign Dash store data (#6867)
- Missing Interface import (#6854)
- Avoid trying to match dimension by name (#6853)
- Add timezone handling for xarray backend (#6849)
- Don't clip matplotlib animation (#6845)
- Check
narwhals.Seriesis alsoarraylike(#6829) - Fix Bars crash with datetime x-axis for single or duplicate values (#6820)
- Raise error if RGB getitem uses Ellipsis with bad name (#6818)
- Self passed in
super().__init__(#6817) - Display colorbar label from value dimension in Bokeh (#6815)
- Prevent duplicate legend entries in
BoxWhiskerplot in Bokeh (#6809) - Labels with offset raising unreachable code in Bokeh (#6800)
- Prevent Matplotlib from overriding
Cycle.default_cycleswith RGB tuples (#6798) - BoxEdit stream data not initialized for Rectangles (#6786)
- Sync visibility with PolyDraw/PolyEdit (#6784)
- Support pandas dtypes for interpolation (#6783)
- Handle
NdMappingwith explicit tuple set slicing with dimension values (#6780) - Check for zero height in
get_aspectto prevent ZeroDivisionError (#6779) - Fix extra hover tooltips for labels (#6774)
- Categorical color mapping for Polygons in mpl backend (#6762)
- Categorical color error for Scatter plotly plot (#6758)
- Handle datetime with timezone in rasterize (#6757)
isdatetimecheck for arraylike (#6755)- Seed range streams on initial draw of overlay plots (#6922)
Performance:
- Cache static layout properties in
_update_plotin Bokeh (#6839) - Skip param.update when plot options unchanged (#6837)
- Skip Bokeh property validation in
_update_datasourcein Bokeh (#6835) - Disable pipeline bookkeeping during plot refresh (#6832)
- Cache
gen_typestype tuples (#6831) - Remove dead
hasattrcheck triggering difflib in Bokeh (#6830) - Add numeric fast path to
max_rangeanddimension_range(#6806) - Remove
packagingdependency forregex(#6857)
Type Annotations:
- Add type checking on isolated and utility files (#6851)
- Support latest param dev release and use param.descendents (#6869)
- Update ty version and small fixes (#6859)
- Enable type checking ruff rules (#6850)
Compatibility:
- Numpy 2.5.0 (#6924)
- cuDF 25.12 to 26.06 (#6754, #6795, #6852, #6907)
- Panel 1.9.0 (#6890)
- Matplotlib 3.11.0 (#6856)
- Ibis 12 (#6840)
Refactoring:
- Enable flake8-comprehensions (C4) and pygrep-hooks (PGH) (#6865)
- Enable ruff formatting (#6810)
- Make test use
hv.import if it is top-level import (#6803) - Remove
*imports and update__all__to be static (#6802) - Don't have test inheriting from
unittest.TestCase(#6735)
Governance:
- Add governance (#6752)
Documentation:
- Import panel in Flask + Bokeh deployment example (#6881)
- Convert
.rstfiles to.md(#6823) - Update docstring for interface (#6789)
- Improve Scatter docstring (#6778)
- Move hover tool's example import up (#6773)
- Add documentation for
legend_opts(#6751) - Update tools description (#6768)
- Update roadmap (#6756)
CI/CD:
- Harden CI with zizmor (#6860)