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
Copy file name to clipboardExpand all lines: RELEASE.md
+75-34Lines changed: 75 additions & 34 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,7 +3,7 @@
3
3
4
4
## Release process - full release of `plotly` package
5
5
6
-
This is the release process for releasing `plotly.py` version `X.Y.Z`, including changelogs, Github release and forum announcement.
6
+
This is the release process for releasing Plotly.py version `X.Y.Z`, including changelogs, GitHub release and forum announcement.
7
7
8
8
### Finalize changelog
9
9
@@ -13,59 +13,100 @@ Make sure the changelog includes the version being published at the top, along
13
13
with the expected publication date.
14
14
15
15
Use the `Added`, `Changed`, `Deprecated`, `Removed`, `Fixed`, and `Security`
16
-
labels for all changes to plotly.py. If the version of plotly.js has
16
+
labels for all changes to Plotly.py. If the version of Plotly.js has
17
17
been updated, include this as the first `Updated` entry. Call out any
18
18
notable changes as sub-bullets (new trace types in particular), and provide
19
-
a link to the plotly.js CHANGELOG.
19
+
a link to the Plotly.js CHANGELOG.
20
20
21
-
### Finalize versions
21
+
### Update version numbers
22
22
23
-
**Create a branch `git checkout -b release-X.Y.Z`*from the tip of `origin/main`*.**
23
+
**Create a release branch `git checkout -b release-X.Y.Z`_from the tip of `origin/main`_.**
24
24
25
-
Manually update the versions to `X.Y.Z` in the files specified below.
25
+
- Manually update the versions to `X.Y.Z` in the files specified below:
26
+
-`pyproject.toml`
27
+
- update version
28
+
-`CHANGELOG.md`
29
+
- update version and release date
30
+
- finalize changelog entries according to instructions above
31
+
-`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
+
-`git add -u`
36
+
-`git commit -m "version changes for vX.Y.Z"`
37
+
-`git push`
38
+
- Create a GitHub pull request from `release-X.Y.Z` to `main` and wait for CI to be green
39
+
- On the release branch, create and push a tag for the release:
40
+
-`git tag vX.Y.Z`
41
+
-`git push origin vX.Y.Z`
26
42
27
-
-`pyproject.toml`
28
-
+ update version
29
-
-`CHANGELOG.md`
30
-
+ update the release date
31
-
- Commit your changes on the branch:
32
-
+`git commit -a -m "version changes for vX.Y.Z"`
33
-
- Create a tag for Github release
34
-
+`git tag vX.Y.Z`
35
-
+`git push --atomic origin release-X.Y.Z vX.Y.Z`
36
-
- Create a Github pull request from `release-X.Y.Z` to `main` and wait for CI to be green
43
+
### Manual QA in Jupyter
37
44
38
-
### Download and QA CI Artifacts
45
+
We don't currently have automated tests for Jupyter, so we do this QA step manually.
39
46
40
-
The `full_build` job in the `release_build` workflow in CircleCI produces a tarball of artifacts `output.tgz` which you should download and decompress, which will give you a directory called `output`. The filenames contained within will contain version numbers.
47
+
The `full_build` job in the `release_build` workflow in CircleCI produces a tarball of artifacts `output.tgz`
48
+
which you should download and decompress, which will give you a directory called `output`. The filenames within
49
+
will contain version numbers; make sure the version numbers are correct.
41
50
42
-
To locally install the PyPI dist, make sure you have an environment with JupyterLab installed (maybe one created with `conda create -n condatest python=3.10 jupyter anywidget pandas`):
51
+
Set up an environment with Jupyter, AnyWidget, and Pandas installed (`pip install jupyter anywidget pandas`). Then:
You'll want to check, in both Lab and Notebook, **in a brand new notebook in each** so that there is no caching of previous results, that `go.Figure()` and `go.FigureWidget()` work without error.
57
+
You'll want to check, in both JupyterLab (launch with `jupyter lab`) and Jupyter Notebook (launch with `jupyter notebook`),
58
+
that `go.Figure()` and `go.FigureWidget()` work as expected.
50
59
51
-
### Publishing
60
+
Notes:
61
+
-**Start by creating a brand new notebook each time** so that there is no caching of previous results
62
+
-**Do not run the Jupyter commands from the root `plotly.py/` directory on your machine** because Jupyter may be confused
63
+
by metadata from previous Plotly.py builds
52
64
53
-
Once you're satisfied that things render in Lab and Notebook in Widget and regular mode,
54
-
you can publish the artifacts. **You will need special credentials from Plotly leadership to do this.**.
65
+
Code for testing `go.Figure()`:
66
+
```python
67
+
import plotly
68
+
import plotly.graph_objects as go
55
69
70
+
print(plotly.__version__) # Make sure version is correct
Once these are verified working, you can move on to publishing the release.
87
+
88
+
### Merge the release PR and make a GitHub release
89
+
90
+
- Merge the pull request you created above into `main`
91
+
- Go to https://github.com/plotly/plotly.py/releases and "Draft a new release"
92
+
- Enter the `vX.Y.Z` tag you created already above and make "Release title" the same string as the tag.
93
+
- Copy the changelog section for this version into "Describe this release"
94
+
- Upload the build artifacts downloaded in the previous step (`.tar` and `.whl`)
95
+
96
+
### Publishing to PyPI
97
+
98
+
The final step is to publish the release to PyPI. **You will need special permissions from Plotly leadership to do this.**.
99
+
100
+
You must install first install [Twine](https://pypi.org/project/twine/) (`pip install twine`) if not already installed.
56
101
57
102
Publishing to PyPI:
58
103
```bash
59
104
(plotly_dev) $ cd path/to/output
60
105
(plotly_dev) $ twine upload plotly-X.Y.Z*
61
106
```
62
107
63
-
### Merge the PR and make a Release
64
-
65
-
1. Merge the pull request you created above into `main`
66
-
2. Go to https://github.com/plotly/plotly.py/releases and "Draft a new release"
67
-
3. Enter the `vX.Y.Z` tag you created already above and make "Release title" the same string as the tag.
68
-
4. Copy the changelog section for this version as the "Describe this release"
108
+
You will be prompted to enter an API token; this can be generated in your PyPI account settings.
109
+
Your account must have permissions to publish to the Plotly project on PyPI.
69
110
70
111
### Update documentation site
71
112
@@ -85,9 +126,9 @@ to features in the release.
85
126
86
127
### Notify Stakeholders
87
128
88
-
* Post an announcement to the Plotly Python forum, with links to the README installation instructions and to the CHANGELOG.
129
+
* Post an announcement to the [Plotly Python forum](https://community.plotly.com/c/plotly-python/5), with links to the README installation instructions and to the CHANGELOG.
89
130
* Update the previous announcement to point to this one
90
-
* Update the Github Release entry and CHANGELOG entry to have the nice title and a link to the announcement
131
+
* Update the GitHub Release entry and CHANGELOG entry to have the nice title and a link to the announcement
91
132
* Follow up on issues resolved in this release or forum posts with better answers as of this release
92
133
93
134
## Release process - Release *Candidate* of `plotly` package
0 commit comments