You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Please uncomment this block and fill in this checklist if your PR makes substantial changes to documentation in the `doc` directory.
3
-
Not all boxes must be checked for every PR:
4
-
check those that apply to your PR and leave the rest unchecked to discuss with your reviewer.
5
-
6
-
If your PR modifies code of the `plotly` package, we have a different checklist below.
7
-
8
-
## Documentation PR
9
-
10
-
- [ ] I have seen the [`doc/README.md`](https://github.com/plotly/plotly.py/blob/main/doc/README.md) file.
11
-
- [ ] This change runs in the current version of Plotly on PyPI and targets the `doc-prod` branch OR it targets the `main` branch.
12
-
- [ ] If this PR modifies the first example in a page or adds a new one, it is a `px` example if at all possible.
13
-
- [ ] Every new/modified example has a descriptive title and motivating sentence or paragraph.
14
-
- [ ] Every new/modified example is independently runnable.
15
-
- [ ] Every new/modified example is optimized for short line count and focuses on the Plotly/visualization-related aspects of the example rather than the computation required to produce the data being visualized.
16
-
- [ ] Meaningful/relatable datasets are used for all new examples instead of randomly-generated data where possible.
17
-
- [ ] The random seed is set if using randomly-generated data.
18
-
- [ ] New/modified remote datasets are loaded from https://plotly.github.io/datasets and added to https://github.com/plotly/datasets.
19
-
- [ ] Large computations are avoided in the new/modified examples in favour of loading remote datasets that represent the output of such computations.
20
-
- [ ] Imports are `plotly.graph_objects as go`, `plotly.express as px`, and/or `plotly.io as pio`.
21
-
- [ ] Data frames are always called `df`.
22
-
- [ ] `fig = <something>` is called high up in each new/modified example (either `px.<something>` or `make_subplots` or `go.Figure`).
23
-
- [ ] Liberal use is made of `fig.add_*` and `fig.update_*` rather than `go.Figure(data=..., layout=...)`.
24
-
- [ ] Specific adders and updaters like `fig.add_shape` and `fig.update_xaxes` are used instead of big `fig.update_layout` calls.
25
-
- [ ] `fig.show()` is at the end of each example.
26
-
- [ ] `plotly.plot()` and `plotly.iplot()` are not used in any example.
27
-
- [ ] Named colors are used instead of hex codes wherever possible.
28
-
- [ ] Code blocks are marked with ````python`.
29
-
30
-
## Code PR
31
-
32
-
- [ ] I have read through the [contributing notes](https://github.com/plotly/plotly.py/blob/main/CONTRIBUTING.md) and understand the structure of the package. In particular, if my PR modifies code of `plotly.graph_objects`, my modifications concern the code generator and *not* the generated files.
33
-
- [ ] I have added tests or modified existing tests.
34
-
- [ ] For a new feature, I have added documentation examples (please see the doc checklist as well).
35
-
- [ ] I have added a CHANGELOG entry if changing anything substantial.
36
-
- [ ] For a new feature or a change in behavior, I have updated the relevant docstrings in the code.
2
+
Thank you for your contribution to plotly.py!
37
3
4
+
Please complete each section below.
38
5
-->
6
+
7
+
### Link to issue
8
+
<!-- Link to the issue closed by this PR. If the issue doesn't exist yet, create it. -->
9
+
10
+
Closes #(issue number)
11
+
12
+
### Description of change
13
+
<!-- Provide a clear 1-2 sentence description of what this PR does. -->
14
+
15
+
### Demo
16
+
17
+
<!-- Include screenshots or screen recordings of this PR in action. -->
18
+
19
+
### Testing strategy
20
+
21
+
<!-- Provide 1-2 sentences explaining tests added or changed by this PR. If testing changes are not needed, explain why. -->
22
+
23
+
### Additional information (optional)
24
+
25
+
<!-- Include any additional context, background, or explanation which doesn't fit in the previous sections. -->
26
+
27
+
### Guidelines
28
+
29
+
-[ ] I have reviewed the [pull request guidelines](https://github.com/plotly/plotly.py/blob/main/CONTRIBUTING.md#opening-a-pull-request) and the [Code of Conduct](https://github.com/plotly/plotly.py/blob/main/CODE_OF_CONDUCT.md) and confirm that this PR follows them.
30
+
-[ ] I have added an entry to the [changelog](https://github.com/plotly/plotly.py/blob/main/CHANGELOG.md) if needed (not required for documentation PRs).
Copy file name to clipboardExpand all lines: CHANGELOG.md
+22-1Lines changed: 22 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,6 +4,27 @@ This project adheres to [Semantic Versioning](http://semver.org/).
4
4
5
5
## Unreleased
6
6
7
+
### Added
8
+
- Add `facet_row` support to `px.imshow` for creating subplots along an additional dimension [[#5445](https://github.com/plotly/plotly.py/pull/5445)]
9
+
10
+
### Fixed
11
+
- 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!
12
+
-`numpy` with a version less than 1.22 is no longer supported.
13
+
14
+
## [6.6.0] - 2026-03-02
15
+
16
+
### Fixed
17
+
- Remove unneeded `type="text/javascript"` attribute from `<style>` tag [[#5454](https://github.com/plotly/plotly.py/pull/5454)], with thanks to @hannob for the contribution!
18
+
- Remove global warning format side effect [[#5481](https://github.com/plotly/plotly.py/pull/5481)], with thanks to @emmanuel-ferdman for the contribution!
19
+
- Fix spurious engine deprecation warning in write_image [[#5517](https://github.com/plotly/plotly.py/pull/5517)], with thanks to @mosh3eb for the contribution!
20
+
21
+
### Updated
22
+
- Update plotly.js from version 3.3.1 to version 3.4.0. See the plotly.js [release notes](https://github.com/plotly/plotly.js/releases/tag/v3.4.0) for more information. [[#5527](https://github.com/plotly/plotly.py/pull/5527)]. Notable changes include:
23
+
- Add support for clicking legend titles to toggle visibility of all traces in legend [[#7698](https://github.com/plotly/plotly.js/pull/7698)]
24
+
- Add support for shapes to reference multiple axes [[#7666](https://github.com/plotly/plotly.js/pull/7666)]
25
+
- Add support for dashed marker lines in scatter plots [[#7673](https://github.com/plotly/plotly.js/pull/7673)]
26
+
- Increase axis autorange when bar charts have outside text labels, to avoid labels being clipped [[#7675](https://github.com/plotly/plotly.js/pull/7675)]
27
+
7
28
## [6.5.2] - 2026-01-14
8
29
9
30
### Fixed
@@ -780,7 +801,7 @@ Items in this section may be considered backwards-incompatible changes for the p
780
801
- if either `x` or `y` (but not both) may now be provided as a list of column references into `data_frame` or columns of data, in which case the imputed data frame will be treated as "wide" data and `melt()`ed internally before applying the usual mapping rules, with function-specific defaults.
781
802
- if neither `x` nor `y` is provided but `data_frame` is, the data frame will be treated as "wide" with defaults depending on the value of `orientation` (and `orientation` has accordingly been added to `scatter`, `line`, `density_heatmap`, and `density_contour` for this purpose). Previously this would have resulted in an empty figure.
782
803
- if both `x` and `y` are provided to `histogram`, and if `x`, `y` and `z` are provided to `density_heatmap` or `density_contour`, then `histfunc` now defaults to `sum` so as to avoid ignoring the provided data, and to cause `histogram` and `bar` to behave more similarly.
783
-
-`violinmode`, `boxmode` and `stripmode` now default to `overlay` if `x` (`y`) in in `v` (`h`) orientation is also mapped to `color`, to avoid strange spacing issues with the previous default of `group` in all cases.
804
+
-`violinmode`, `boxmode` and `stripmode` now default to `overlay` if `x` (`y`) in `v` (`h`) orientation is also mapped to `color`, to avoid strange spacing issues with the previous default of `group` in all cases.
784
805
- The Plotly Express arguments `color_discrete_map`, `symbol_map` and `line_dash_map` now accept the string `"identity"` which causes the corresponding input data to be used as-is rather than mapped into `color_discrete_sequence`, `symbol_sequence` or `line_dash_sequence`, respectively. ([#2336](https://github.com/plotly/plotly.py/pull/2336))
785
806
- Plotly Express now accepts `px.Constant` or `px.Range` objects in the place of column references so as to express constant or increasing integer values. ([#2336](https://github.com/plotly/plotly.py/pull/2336))
Copy file name to clipboardExpand all lines: CONTRIBUTING.md
+51Lines changed: 51 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -171,6 +171,42 @@ and create your pull request.
171
171
> Please do _not_ commit changes to `uv.lock`
172
172
> unless you have added, removed, or changed dependencies in `pyproject.toml`.
173
173
174
+
## Opening a pull request
175
+
176
+
When creating your pull request, please follow the guidelines below.
177
+
178
+
### Code pull request
179
+
180
+
-*Make sure you have reviewed the full [contributing notes (this file)](https://github.com/plotly/plotly.py/blob/main/CONTRIBUTING.md) and understand the structure of the package.*
181
+
- If your PR modifies code of `plotly.graph_objects`, the modifications should be made to the code generator, *not* the generated files.
182
+
- You have added tests or modified existing tests, as needed.
183
+
- For a new feature, you have added documentation examples (please see the doc checklist as well).
184
+
- You have added a CHANGELOG entry if changing anything substantial.
185
+
- For a new feature or a change in behavior, you have updated the relevant docstrings in the code.
186
+
187
+
### Documentation pull request
188
+
189
+
-*Make sure you have reviewed the [`doc/README.md`](https://github.com/plotly/plotly.py/blob/main/doc/README.md) file.*
190
+
- This change runs in the current version of Plotly on PyPI and targets the `doc-prod` branch OR it targets the `main` branch.
191
+
- If this PR modifies the first example in a page or adds a new one, it is a `px` example if at all possible.
192
+
- Every new/modified example has a descriptive title and motivating sentence or paragraph.
193
+
- Every new/modified example is independently runnable.
194
+
- Every new/modified example is optimized for short line count and focuses on the Plotly/visualization-related aspects of the example rather than the computation required to produce the data being visualized.
195
+
- Meaningful/relatable datasets are used for all new examples instead of randomly-generated data where possible.
196
+
- The random seed is set if using randomly-generated data.
197
+
- New/modified remote datasets are loaded from https://plotly.github.io/datasets and added to https://github.com/plotly/datasets.
198
+
- Large computations are avoided in the new/modified examples in favour of loading remote datasets that represent the output of such computations.
199
+
- Imports are `plotly.graph_objects as go`, `plotly.express as px`, and/or `plotly.io as pio`.
200
+
- Data frames are always called `df`.
201
+
-`fig = <something>` is called high up in each new/modified example (either `px.<something>` or `make_subplots` or `go.Figure`).
202
+
- Liberal use is made of `fig.add_*` and `fig.update_*` rather than `go.Figure(data=..., layout=...)`.
203
+
- Specific adders and updaters like `fig.add_shape` and `fig.update_xaxes` are used instead of big `fig.update_layout` calls.
204
+
-`fig.show()` is at the end of each example.
205
+
-`plotly.plot()` and `plotly.iplot()` are not used in any example.
206
+
- Named colors are used instead of hex codes wherever possible.
207
+
- Code blocks are marked with ````python`.
208
+
209
+
174
210
### Testing
175
211
176
212
We use [pytest](https://docs.pytest.org/) for managing and running tests.
@@ -271,3 +307,18 @@ You can then run the following command
`commands.py` serves as an entry point for utilities to help with plotly.py development.
314
+
315
+
Usage: `python commands.py <subcommand> <args>`
316
+
317
+
| Subcommand | Purpose |
318
+
|------------|---------|
319
+
|`codegen [--noformat]`| Regenerate Python files according to `plot-schema.json`.`--noformat` skips formatter step. |
320
+
|`lint`| Lint all Python code in `plotly/`. |
321
+
|`format`| Format all Python code in `plotly/`. |
322
+
|`updateplotlyjs`| Update `plotly.min.js` and `plot-schema.json` to match the `plotly.js` version specified in `js/package.json`. Then, run codegen to regenerate the Python files. |
323
+
|`updateplotlyjsdev [--devrepo REPONAME --devbranch BRANCHNAME] \| [--local PATH]`| Update `plot-schema.json` and `plotly.min.js` to match the version in the provided plotly.js repo name and branch name, OR local path. Then, run codegen to regenerate the Python files. |
324
+
|`bumpversion X.Y.Z`| Update the plotly.py version number to X.Y.Z across all files where it needs to be updated. |
Copy file name to clipboardExpand all lines: RELEASE.md
+20-11Lines changed: 20 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,10 +7,11 @@ This is the release process for releasing plotly.py version `X.Y.Z`, including c
7
7
8
8
### Finalize changelog
9
9
10
-
Review the contents of `CHANGELOG.md`. We try to follow
10
+
Review the contents of `CHANGELOG.md` under the **Unreleased** header. We try to follow
11
11
the [keepachangelog](https://keepachangelog.com/en/1.0.0/) guidelines.
12
-
Make sure the changelog includes the version being published at the top, along
13
-
with the expected publication date.
12
+
13
+
**Note: You don't need to update the header itself with the new version number,
14
+
as that will be done automatically as part of the next step.**
14
15
15
16
Use the `Added`, `Changed`, `Deprecated`, `Removed`, `Fixed`, and `Security`
16
17
labels for all changes to plotly.py. If the version of plotly.js has
@@ -22,16 +23,24 @@ a link to the plotly.js CHANGELOG.
22
23
23
24
**Create a release branch `git checkout -b release-X.Y.Z`_from the tip of `origin/main`_.**
24
25
25
-
- Manually update the versions to `X.Y.Z` in the files specified below:
26
+
- Ensure that you have `npm` and `uv` installed in your environment
27
+
28
+
- Run the command `python commands.py bumpversion X.Y.Z`, which will update the version to X.Y.Z in the following places
26
29
-`pyproject.toml`
27
-
- update version
28
-
-`CHANGELOG.md`
29
-
- update version and release date
30
-
- finalize changelog entries according to instructions above
30
+
-`uv.lock`
31
+
-`js/package.json`
32
+
-`js/package-lock.json`
33
+
-`CHANGELOG.md` (Adds a new header for X.Y.Z above the unreleased items)
31
34
-`CITATION.cff`
32
-
- update version and release date
33
-
- Run `uv lock` to update the version number in the `uv.lock` file (do not update manually)
34
-
- Commit and push your changes to the release branch:
35
+
36
+
- Run `git diff` and ensure the above files were all updated correctly.
37
+
- Note: The current date is used as the release date in `CHANGELOG.md` and `CITATION.cff`. If you want to use a different date, edit these files manually afterward.
38
+
- If the bumpversion command failed for any reason, you can update the versions yourself by doing the following:
39
+
- Manually update the version number (and release date, as needed) in `pyproject.toml`, `CHANGELOG.md` and `CITATION.cff`
40
+
- Run `npm version X.Y.Z` to update `js/package.json` and `js/package-lock.json`
41
+
- Run `uv lock` to update `uv.lock`
42
+
43
+
- Commit and push the changed files to the release branch:
0 commit comments