Skip to content

Commit 2d2adff

Browse files
committed
FIX: More
2 parents 8df9500 + ca01aba commit 2d2adff

1,068 files changed

Lines changed: 72079 additions & 193814 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/build-doc.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,9 @@ jobs:
3838
3939
4040
- name: Build HTML docs
41-
env:
42-
MAPBOX_TOKEN: ${{ secrets.MAPBOX_TOKEN }}
4341
run: |
4442
cd doc
4543
source .venv/bin/activate
46-
echo "${MAPBOX_TOKEN}" > python/.mapbox_token
4744
make -kj8 || make -kj8
4845
curl https://raw.githubusercontent.com/plotly/graphing-library-docs/master/front-matter-ci.py > front-matter-ci.py
4946
curl https://raw.githubusercontent.com/plotly/graphing-library-docs/master/check-or-enforce-order.py > check-or-enforce-order.py
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
name: Check Python codegen
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
pull_request:
8+
types: [opened, reopened, synchronize]
9+
10+
jobs:
11+
check-python-codegen:
12+
name: Check Python codegen
13+
runs-on: ubuntu-latest
14+
steps:
15+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
16+
- name: Set up Python
17+
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
18+
with:
19+
python-version: "3.x"
20+
21+
- name: Set up uv
22+
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
23+
24+
- name: Install dependencies
25+
run: |
26+
uv venv
27+
source .venv/bin/activate
28+
uv lock --check
29+
uv sync --extra dev_codegen
30+
- name: Run codegen
31+
run: |
32+
source .venv/bin/activate
33+
python commands.py codegen
34+
- name: Check for changes
35+
run: |
36+
# Fail if codegen produced any changes to the working directory.
37+
# This means the committed generated files are out of date and codegen
38+
# needs to be re-run locally and the results committed.
39+
if [ -n "$(git status --porcelain)" ]; then
40+
echo "::error::Generated files are out of date. Please run 'python commands.py codegen' locally and commit the result."
41+
echo "The following files differ after running codegen:"
42+
git status --porcelain
43+
echo ""
44+
exit 1
45+
fi
46+
echo "Generated files are up to date."

.github/workflows/run-pytest.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ jobs:
135135
python -m pytest -x test_init/test_lazy_imports.py
136136
137137
test-kaleido-v0:
138-
name: Optional tests (Kaleido only), Kaleido v0 (Python 3.12, kaleido 0.2.1)
138+
name: Kaleido v0 RuntimeError verification (Python 3.12, kaleido 0.2.1)
139139
runs-on: ubuntu-latest
140140
steps:
141141
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
@@ -157,7 +157,7 @@ jobs:
157157
uv pip uninstall kaleido
158158
uv pip install kaleido==0.2.1
159159
python --version
160-
- name: Test plotly.io image output with Kaleido v0
160+
- name: Test that plotly.io raises correct error with Kaleido v0
161161
run: |
162162
source .venv/bin/activate
163-
python -m pytest tests/test_optional/test_kaleido
163+
python -m pytest tests/test_optional/test_kaleido/test_kaleido_v0_error.py

.gitignore

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
0
22
0.html
33
iframe_figures/
4-
tests/test_orca/images/linux/failed/
54

65
*.egg-info
76

@@ -49,13 +48,10 @@ plotly.egg-info/
4948
# macOS utility file
5049
**/.DS_Store
5150

52-
tests/test_orca/images/*/failed
53-
tests/test_orca/images/*/tmp
5451
tests/test_core/test_offline/plotly.min.js
5552
temp-plot.html
5653
.vscode
5754
doc/python/.ipynb_checkpoints
58-
doc/python/.mapbox_token
5955
doc/.ipynb_checkpoints
6056
tags
6157
doc/check-or-enforce-order.py

CHANGELOG.md

Lines changed: 53 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,59 @@ This project adheres to [Semantic Versioning](http://semver.org/).
44

55
## Unreleased
66

7+
### Fixed
8+
- Fix the sphinx-gallery scraper so that it generates thumbnails for figures shown with `fig.show()` or displayed as the last expression of a code block, warns once (instead of failing the build) when static image export is unavailable, and no longer scrapes files belonging to other examples during parallel builds [[#4722](https://github.com/plotly/plotly.py/issues/4722), [#4959](https://github.com/plotly/plotly.py/issues/4959)], with thanks to @larsoner for the contribution!
9+
10+
11+
## [7.0.0] - 2026-08-25
12+
713
### Fixed
814
- Fix `hex_to_rgb` parsing of 3-digit shorthand hexadecimal colors such as `#FFF` [[#5662](https://github.com/plotly/plotly.py/pull/5662)], with thanks to @genrichez for the contribution!
15+
- Improve `px.*_map()` auto-fitting behavior when `zoom` and `center` are not specified [[#5686](https://github.com/plotly/plotly.py/pull/5686)]
916
- Add `<!doctype html>` to the `to_html()` template to comply with modern web standards [[#5693](https://github.com/plotly/plotly.py/pull/5693)], with thanks to @mishrakushal for the contribution!
10-
- Fix the sphinx-gallery scraper so that it generates thumbnails for figures shown with `fig.show()` or displayed as the last expression of a code block, warns once (instead of failing the build) when static image export is unavailable, and no longer scrapes files belonging to other examples during parallel builds [[#4722](https://github.com/plotly/plotly.py/issues/4722), [#4959](https://github.com/plotly/plotly.py/issues/4959)], with thanks to @larsoner for the contribution!
17+
- Apply `histfunc`/`z` aggregation to `marginal_x`/`marginal_y="histogram"` subplots in `density_heatmap`/`density_contour`, instead of always showing raw bin counts [[#3521](https://github.com/plotly/plotly.py/issues/3521)], with thanks to @lucasjamar for the contribution!
18+
- Fix `mpl_to_plotly` silently dropping matplotlib path collections in data coordinates (such as violin plots, pcolor, event plots, stack plots, fill_between, and stem plots) by rendering them as filled polygons or lines [[#5702](https://github.com/plotly/plotly.py/pull/5702)], with thanks to @robertoffmoura for the contribution!
19+
20+
### Updated
21+
- Update plotly.js from version 3.6.0 to version 4.0.0 [[#5673](https://github.com/plotly/plotly.py/pull/5673)]. This is a major-version release with many changes. See the [plotly.js release notes](https://github.com/plotly/plotly.js/releases/tag/v4.0.0) for the full list. The most significant changes include:
22+
- Add `quiver` trace type to visualize vector fields using arrows [[#7710](https://github.com/plotly/plotly.js/pull/7710), [#7945](https://github.com/plotly/plotly.js/issues/7945)]
23+
- Add "Share Chart" modebar button for generating a chart-sharing link via Plotly Cloud [[#7909](https://github.com/plotly/plotly.js/pull/7909)]
24+
- Remove `scattermapbox`, `choroplethmapbox`, `densitymapbox` trace types, the `mapbox` subplot, and the `mapboxAccessToken` config option [[#7860](https://github.com/plotly/plotly.js/pull/7860)]. Use the equivalent `*map` traces instead.
25+
- The corresponding `graph_objects` and Plotly Express functions have also been removed in plotly.py; use the `map` versions instead
26+
- Drop support for MathJax v2, and add support for v4 [[#7898](https://github.com/plotly/plotly.js/pull/7898)]. MathJax is the JavaScript library used for rendering mathematical equations in plotly charts.
27+
- Switch color processing library from [TinyColor](https://github.com/bgrins/TinyColor) to [culori](https://culorijs.org) [[#7536](https://github.com/plotly/plotly.js/pull/7536), [#7962](https://github.com/plotly/plotly.js/pull/7962)]. There are some changes to supported color string formats as a result:
28+
- `rgb()`/`rgba()` strings with decimal 0–1 fractions are no longer supported
29+
- `hsv()` color strings are no longer supported
30+
- Strings with invalid syntax such as `hsl(120, 50% 50%)` are no longer supported
31+
- New supported formats: `'#ff0000aa'`, `'#f00a'`, `'rgb(255 0 0)'`, `'rgba(255 0 0 / 0.5)'`, `'hsl(0 100% 50% / 0.5)'`, `'hsla(0, 100%, 50%, 0.5)'`, `'hwb(0 0% 0%)'`, `lab()`, `lch()`, `oklab()`, `oklch()`, `color()`, `hsl(0.5turn 60% 40%)`, `hsl(none 60% 40%)`
32+
- Replace `country-regex` with `country-iso-search` to search for country names in choropleth, scattergeo traces [[#7856](https://github.com/plotly/plotly.js/pull/7856)]. Most country names are handled exactly the same; a small number of legacy entries have been removed.
33+
- Change `layout.geo.fitbounds` default from `false` to `'locations'` [[#7895](https://github.com/plotly/plotly.js/pull/7895)]. `geo` subplots will now auto-fit the initial view to the trace data by default.
34+
- Dynamically compute `center` and `zoom` values for `scattermap` and `densitymap` traces. The initial map view will now auto-fit to the trace data by default. Add `layout.map.fitbounds` attribute (default `'locations'`) to enable or disable auto-fitting behavior [[#7884](https://github.com/plotly/plotly.js/pull/7884), [#7913](https://github.com/plotly/plotly.js/pull/7913)]
35+
- Fix GeoJSON bounding-box computation for `choropleth` and `scattergeo` traces whose geometry crosses the antimeridian [[#7891](https://github.com/plotly/plotly.js/pull/7891)]
36+
37+
## [7.0.0rc0] - 2026-07-29
1138

39+
### Removed
40+
- Remove the deprecated Figure Factory functions `create_2d_density`, `create_annotated_heatmap`, `create_bullet`, `create_candlestick`, `create_choropleth`, `create_distplot`, `create_facet_grid`, `create_gantt`, `create_hexbin_mapbox`, `create_ohlc`, `create_scatterplotmatrix`, and `create_violin` [[#5627](https://github.com/plotly/plotly.py/pull/5627)]
41+
- Remove support for Kaleido versions less than v1.0.0 for static image generation [[#5677](https://github.com/plotly/plotly.py/pull/5677)]
42+
- Remove support for Orca for static image generation [[#5677](https://github.com/plotly/plotly.py/pull/5677)]
43+
- Remove `engine` argument from functions `fig.write_image()`,`fig.to_image()`, `pio.write_image()`, `pio.write_images()`, `pio.to_image()`, `pio.full_figure_for_development()`, and from renderer constructors [[#5677](https://github.com/plotly/plotly.py/pull/5677)]
44+
45+
### Updated
46+
- Update plotly.js from version 3.6.0 to version 4.0.0-rc.0 [[#5673](https://github.com/plotly/plotly.py/pull/5673)]. This is a major-version release candidate with many changes. See the [plotly.js release notes](https://github.com/plotly/plotly.js/releases/tag/v4.0.0-rc.0) for the full list. The most significant changes include:
47+
- Add `quiver` trace type to visualize vector fields using arrows [[#7710](https://github.com/plotly/plotly.js/pull/7710)]
48+
- Add "Share Chart" modebar button for generating a chart-sharing link via Plotly Cloud [[#7909](https://github.com/plotly/plotly.js/pull/7909)]
49+
- Remove `scattermapbox`, `choroplethmapbox`, `densitymapbox` trace types, the `mapbox` subplot, and the `mapboxAccessToken` config option [[#7860](https://github.com/plotly/plotly.js/pull/7860)]. Use the equivalent `*map` traces instead.
50+
- The corresponding `graph_objects` and Plotly Express functions have also been removed in plotly.py; use the `map` versions instead
51+
- Drop support for MathJax v2, and add support for v4 [[#7898](https://github.com/plotly/plotly.js/pull/7898)]. MathJax is the JavaScript library used for rendering mathematical equations in plotly charts.
52+
- Switch color processing library from [TinyColor](https://github.com/bgrins/TinyColor) to [color](https://github.com/Qix-/color) [[#7536](https://github.com/plotly/plotly.js/pull/7536)]. There are some changes to supported color string formats as a result:
53+
- `rgb()`/`rgba()` strings with decimal 0–1 fractions are no longer supported
54+
- `hsv()` color strings are no longer supported
55+
- New supported formats: `'#ff0000aa'`, `'#f00a'`, `'rgb(255 0 0)'`, `'rgba(255 0 0 / 0.5)'`, `'hsl(0 100% 50% / 0.5)'`, `'hsla(0, 100%, 50%, 0.5)'`, `'hwb(0, 0%, 0%)'`
56+
- Replace `country-regex` with `country-iso-search` to search for country names in choropleth, scattergeo traces [[#7856](https://github.com/plotly/plotly.js/pull/7856)]. Most country names are handled exactly the same; a small number of legacy entries have been removed.
57+
- Change `layout.geo.fitbounds` default from `false` to `'locations'` [[#7895](https://github.com/plotly/plotly.js/pull/7895)]. `geo` subplots will now auto-fit the initial view to the trace data by default.
58+
- Dynamically compute `center` and `zoom` values for `scattermap` and `densitymap` traces. The initial map view will now auto-fit to the trace data by default. Add `layout.map.fitbounds` attribute (default `'locations'`) to enable or disable auto-fitting behavior [[#7884](https://github.com/plotly/plotly.js/pull/7884), [#7913](https://github.com/plotly/plotly.js/pull/7913)]
59+
- Fix GeoJSON bounding-box computation for `choropleth` and `scattergeo` traces whose geometry crosses the antimeridian [[#7891](https://github.com/plotly/plotly.js/pull/7891)]
1260

1361
## [6.9.0] - 2026-07-09
1462

@@ -19,10 +67,9 @@ This project adheres to [Semantic Versioning](http://semver.org/).
1967

2068
### Updated
2169
- Update plotly.js from version 3.6.0 to version 3.7.0. See the plotly.js [release notes](https://github.com/plotly/plotly.js/releases/tag/v3.7.0) for more information [[#5639](https://github.com/plotly/plotly.py/pull/5639)]. Notable changes include:
22-
- Rename `sendDataToCloud` modebar button to `sendChartToCloud`, and update to upload chart to Plotly Cloud [[#7802](https://github.com/plotly/plotly.js/pull/7802), [#7852](https://github.com/plotly/plotly.js/pull/7852), [#7854](https://github.com/plotly/plotly.js/pull/7854)]. NOTE: The Plotly Cloud endpoint for receiving charts is not yet functional, so this button won't complete the upload.
23-
- Fix stale `scattergl` error bars after toggling traces with mixed error bar visibility [[#7773](https://github.com/plotly/plotly.js/issues/7773)], with thanks to @JulienIcon for the contribution!
24-
- Fix geo `fitbounds` to choose a compact longitude range when point data straddles the antimeridian [[#7837](https://github.com/plotly/plotly.js/pull/7837)], with thanks to @SharadhNaidu for the contribution!
25-
70+
- Rename `sendDataToCloud` modebar button to `sendChartToCloud`, and update to upload chart to Plotly Cloud [[#7802](https://github.com/plotly/plotly.js/pull/7802), [#7852](https://github.com/plotly/plotly.js/pull/7852), [#7854](https://github.com/plotly/plotly.js/pull/7854)]
71+
- Fix stale `scattergl` error bars after toggling traces with mixed error bar visibility [[#7773](https://github.com/plotly/plotly.js/issues/7773)]
72+
- Fix geo `fitbounds` to choose a compact longitude range when point data straddles the antimeridian [[#7837](https://github.com/plotly/plotly.js/pull/7837)]
2673

2774
## [6.8.0] - 2026-06-03
2875

@@ -205,7 +252,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
205252
- Drop deprecated `zauto`, `zmin` and `zmax` from the surface trace [[#7234](https://github.com/plotly/plotly.js/pull/7234)]
206253
- Drop deprecated `autotick` attributes from cartesian axes [[#7236](https://github.com/plotly/plotly.js/pull/7236)]
207254
- Drop `transforms` from the API [[#7240](https://github.com/plotly/plotly.js/pull/7240), [#7254](https://github.com/plotly/plotly.js/pull/7254)]
208-
- Deprecate Mapbox-based traces.[[#4900](https://github.com/plotly/plotly.py/pull/4900)]. See the [MapLibre Migration](https://plotly.com/python/mapbox-to-maplibre/) page for details on migrating from Mapbox to Maplibre.
255+
- Deprecate Mapbox-based traces.[[#4900](https://github.com/plotly/plotly.py/pull/4900)]. See the [MapLibre Migration](https://plotly.com/python/mapbox-to-maplibre/) page for details on migrating from Mapbox to MapLibre.
209256
- Update plotly.py to use base64 encoding of typed arrays e.g. numpy in plotly JSON to keep precision intact and improve performance [[#4470](https://github.com/plotly/plotly.py/pull/4470)].
210257
- Make plotly-express dataframe agnostic via Narwhals [[#4790](https://github.com/plotly/plotly.py/pull/4790)].
211258
- Update `go.FigureWidget` to use `anywidget` [[#4823](https://github.com/plotly/plotly.py/pull/4823)]

CITATION.cff

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ authors:
99
- family-names: "Parmer"
1010
given-names: "Chris"
1111
title: "An interactive, open-source, and browser-based graphing library for Python"
12-
version: 6.9.0
12+
version: 7.0.0
1313
doi: 10.5281/zenodo.14503524
14-
date-released: 2026-07-09
14+
date-released: 2026-08-25
1515
url: "https://github.com/plotly/plotly.py"

CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,7 @@ python commands.py updateplotlyjsdev --devrepo reponame --devbranch branchname
309309

310310
This fetches the `plotly.js` in the CircleCI artifact of the branch `branchname` of the repo `reponame`.
311311
If `--devrepo` or `--devbranch` are omitted,
312-
`updateplotlyjsdev` defaults to `plotly/plotly.js` and `master` respectively.
312+
`updateplotlyjsdev` defaults to `plotly/plotly.js` and `main` respectively.
313313

314314
### Local Repository
315315

README.md

Lines changed: 6 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -106,13 +106,10 @@ conda install jupyter anywidget
106106
### Static Image Export
107107

108108
plotly.py supports [static image export](https://plotly.com/python/static-image-export/),
109-
using either the [`kaleido`](https://github.com/plotly/Kaleido)
110-
package (recommended, supported as of `plotly` version 4.9) or the [orca](https://github.com/plotly/orca)
111-
command line utility (legacy as of `plotly` version 4.9).
109+
using the [`kaleido`](https://github.com/plotly/Kaleido)
110+
package (version 1.0 or greater).
112111

113-
#### Kaleido
114-
115-
The [`kaleido`](https://github.com/plotly/Kaleido) package has no dependencies and can be installed
112+
Kaleido has minimal dependencies and can be installed
116113
using pip
117114

118115
```
@@ -125,23 +122,11 @@ or conda
125122
conda install -c conda-forge python-kaleido
126123
```
127124

128-
### Extended Geo Support
129-
130-
Some plotly.py features rely on fairly large geographic shape files. The county
131-
choropleth figure factory is one such example. These shape files are distributed as a
132-
separate `plotly-geo` package. This package can be installed using pip...
133-
134-
```
135-
pip install plotly-geo==1.0.0
136-
```
125+
Kaleido requires Chrome or Chromium to generate images. By default, Kaleido will use the Chrome or Chromium version already installed on your system. If you don't have it installed or Kaleido can't find it, you may need to install it by running the command:
137126

138-
or conda
139-
140-
```
141-
conda install -c plotly plotly-geo=1.0.0
142-
```
127+
`plotly_get_chrome`
143128

144-
`plotly-geo` can be found on Github at https://github.com/plotly/plotly-geo.
129+
on your command line.
145130

146131
## Copyright and Licenses
147132

RELEASE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ to features in the release.
143143
If plotly.js adds new traces or trace/layout attributes that aren't listed in `orderings.json`, `get_plotschema.py` prints a warning like `missing key in attributes: <attribute-name>` and appends the missing entry to the end of its section. To resolve:
144144

145145
- Add each missing attribute to the appropriate section of `/_data/orderings.json` in the position you want it to appear in the reference docs.
146-
- When in doubt about trace-attribute placement, match plotly.js's native order: open the regenerated `_data/plotschema.json` and find where plotly.js itself places the attribute (e.g. inspect a representative trace's `attributes` keys in order). Following the native order keeps related attributes grouped (for example, `texttemplate``texttemplatefallback``texttemplatesrc`).
146+
- When in doubt about trace-attribute placement, match plotly.js's native order: open the regenerated `_data/plotschema.json` and find where plotly.js itself places the attribute (e.g. inspect a representative trace's `attributes` keys in order). Following the native order keeps related attributes grouped (for example, `texttemplate``texttemplatefallback`).
147147
- For new top-level layout attributes, group them with semantically related entries rather than appending to the end (for example, a new click-behavior attribute like `clickanywhere` belongs next to `clickmode`).
148148
- Re-run `python get_plotschema.py <PLOTLY.JS VERSION>` after editing `orderings.json` and confirm the warnings are gone.
149149
3. Rebuild the Algolia `schema` index with `ALGOLIA_API_KEY=<key> make update_ref_search`

0 commit comments

Comments
 (0)