From b55ce9ad5f803888535c125c92692fd179464f14 Mon Sep 17 00:00:00 2001 From: Mr-Neutr0n <64578610+Mr-Neutr0n@users.noreply.github.com> Date: Fri, 6 Feb 2026 04:20:22 +0530 Subject: [PATCH 1/4] Fix numpy 2.4.0 compatibility in create_violin() Fixes #5461 The 'interpolation' parameter was deprecated in numpy.percentile() and removed in numpy 2.4.0. It has been replaced with the 'method' parameter which uses the same values. Changed all three np.percentile() calls in calc_stats() from using 'interpolation' to 'method'. --- plotly/figure_factory/_violin.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plotly/figure_factory/_violin.py b/plotly/figure_factory/_violin.py index 55924e69238..285733fefd8 100644 --- a/plotly/figure_factory/_violin.py +++ b/plotly/figure_factory/_violin.py @@ -17,9 +17,9 @@ def calc_stats(data): x = np.asarray(data, float) vals_min = np.min(x) vals_max = np.max(x) - q2 = np.percentile(x, 50, interpolation="linear") - q1 = np.percentile(x, 25, interpolation="lower") - q3 = np.percentile(x, 75, interpolation="higher") + q2 = np.percentile(x, 50, method="linear") + q1 = np.percentile(x, 25, method="lower") + q3 = np.percentile(x, 75, method="higher") iqr = q3 - q1 whisker_dist = 1.5 * iqr From 94ad286c204bc9232f337bb1b44e38ef515a0a8e Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Tue, 17 Mar 2026 16:45:33 -0600 Subject: [PATCH 2/4] Add numpy minimum version --- pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 15c4628a911..faf7b04d3bc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -39,7 +39,7 @@ dependencies = [ ] [project.optional-dependencies] -express = ["numpy"] +express = ["numpy>=1.22"] kaleido = ["kaleido>=1.1.0"] dev_core = [ "pytest", @@ -54,6 +54,7 @@ dev_build = [ ] dev_optional = [ "plotly[dev_build]", + "plotly[express]", "plotly[kaleido]", "anywidget", "colorcet", @@ -61,7 +62,6 @@ dev_optional = [ "fiona<=1.9.6;python_version<='3.8'", "geopandas", "inflect", - "numpy", "orjson", "pandas", "pdfrw", From 5f242eff0e622baa38ad196ba745fbfbfd51d8cc Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Tue, 17 Mar 2026 16:45:46 -0600 Subject: [PATCH 3/4] Update changelog --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 49da6b87515..d339e3cc7b9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ This project adheres to [Semantic Versioning](http://semver.org/). ## Unreleased +### Fixed +- Update `numpy.percentile` syntax to stop using deprecated alias [[5483](https://github.com/plotly/plotly.py/pull/5483)], with thanks to @Mr-Neutr0n for the contribution! + - `numpy` with a version less than 1.22 is no longer supported. + ## [6.6.0] - 2026-03-02 ### Fixed From 12846fc48aaf76a630d0c97a81be73e966eae9a9 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Tue, 17 Mar 2026 16:53:45 -0600 Subject: [PATCH 4/4] Update uv lock file --- uv.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/uv.lock b/uv.lock index 41cee9778dd..cdbf570b13d 100644 --- a/uv.lock +++ b/uv.lock @@ -1,5 +1,5 @@ version = 1 -revision = 2 +revision = 3 requires-python = ">=3.8" resolution-markers = [ "python_full_version >= '3.12'", @@ -4418,8 +4418,7 @@ requires-dist = [ { name = "jupyter", marker = "extra == 'dev-build'" }, { name = "kaleido", marker = "extra == 'kaleido'", specifier = ">=1.1.0" }, { name = "narwhals", specifier = ">=1.15.1" }, - { name = "numpy", marker = "extra == 'dev-optional'" }, - { name = "numpy", marker = "extra == 'express'" }, + { name = "numpy", marker = "extra == 'express'", specifier = ">=1.22" }, { name = "orjson", marker = "extra == 'dev-optional'" }, { name = "packaging" }, { name = "pandas", marker = "extra == 'dev-optional'" }, @@ -4428,6 +4427,7 @@ requires-dist = [ { name = "plotly", extras = ["dev-build"], marker = "extra == 'dev-optional'" }, { name = "plotly", extras = ["dev-core"], marker = "extra == 'dev-build'" }, { name = "plotly", extras = ["dev-optional"], marker = "extra == 'dev'" }, + { name = "plotly", extras = ["express"], marker = "extra == 'dev-optional'" }, { name = "plotly", extras = ["kaleido"], marker = "extra == 'dev-optional'" }, { name = "plotly-geo", marker = "extra == 'dev-optional'" }, { name = "polars", extras = ["timezone"], marker = "extra == 'dev-optional'" },