Skip to content

Commit 8e87a8c

Browse files
authored
Release 3.1.1 (#1096)
* Updated CHANGELOG and README * Added release process to contributing.md
1 parent 2d264f7 commit 8e87a8c

7 files changed

+228
-20
lines changed

CHANGELOG.md

+57-6
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,67 @@
22
All notable changes to this project will be documented in this file.
33
This project adheres to [Semantic Versioning](http://semver.org/).
44

5+
## [3.1.1] - 2018-08-10
6+
This release is a minor bug-fix update to version 3.1.0
7+
8+
### JupyterLab Versions
9+
For use with JupyterLab, the following versions of the following packages
10+
must be installed:
11+
12+
- Python Packages
13+
- plotly==3.1.1
14+
- ipywidgets>=7.2
15+
- notebook>=5.3
16+
- jupyterlab==0.33
17+
18+
- JupyterLab Extensions
19+
20+
- @jupyter-widgets/jupyterlab-manager@0.36
21+
- @jupyterlab/plotly-extension@0.16
22+
23+
### Updated
24+
- Updated plotly.js to version 1.39.4.
25+
- This is a bug-fix release of plotly.js
26+
- See [the plotly.js CHANGELOG](https://github.com/plotly/plotly.js/blob/master/CHANGELOG.md#1394----2018-08-02) for more information
27+
28+
### Fixed
29+
- Fixed error in validation of configkeys
30+
[plotly/plotly.js#1065](https://github.com/plotly/plotly.py/pull/1065)
31+
- Fixed error in presentation of named colorscales
32+
[plotly/plotly.js#1089](https://github.com/plotly/plotly.py/pull/1089)
33+
- Fixed numerical precision error when using `plotly.tools.make_subplots`
34+
to create figures with a large number of subplots
35+
[plotly/plotly.js#1091](https://github.com/plotly/plotly.py/pull/1091)
36+
- Fixed problem that prevented the use of the `.update` method to initialize
37+
an array property (e.g. `layout.shapes`)
38+
[plotly/plotly.js#1091](https://github.com/plotly/plotly.py/pull/1092)
39+
- Fixed `FigureWidget` problem causing scroll zoom on 3D plots to stutter
40+
[plotly/plotly.js#1094](https://github.com/plotly/plotly.py/pull/1094)
41+
- Fixed invalid `tickmode` property in `matplotlylib`
42+
[plotly/plotly.js#1101](https://github.com/plotly/plotly.py/pull/1101)
43+
544
## [3.1.0] - 2018-07-20
645

7-
### JupyterLab plotlywidget version: 0.2.0
8-
Please upgrade the Jupyterlab `plotlywidget` extension to version 0.2.0
9-
(See README for instructions)
46+
### JupyterLab Versions
47+
For use with JupyterLab, the following versions of the following packages
48+
must be installed. See [README.md](README.md) for instructions.
1049

11-
### Plotly.js version: 1.39.2
12-
See [Plotly.js CHANGELOG](https://github.com/plotly/plotly.js/blob/master/CHANGELOG.md) for
13-
full list of changes. Select highlights are listed below.
50+
- Python Packages
51+
- plotly==3.1.0
52+
- ipywidgets>=7.2
53+
- notebook>=5.3
54+
- jupyterlab==0.32.1
55+
56+
- JupyterLab Extensions
57+
58+
- @jupyter-widgets/jupyterlab-manager@0.35
59+
- @jupyterlab/plotly-extension@0.16
1460

61+
### Updated
62+
- Updated Plotly.js to version 1.39.2
63+
- See highlights below
64+
- See [the plotly.js CHANGELOG](https://github.com/plotly/plotly.js/blob/master/CHANGELOG.md#1392----2018-07-16) for more information.
65+
1566
### Added
1667
- Added 3D streamtube traces
1768
[plotly/plotly.js#2658](https://github.com/plotly/plotly.js/pull/2658)

README.md

+19-5
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ Built on top of [plotly.js](https://github.com/plotly/plotly.js), `plotly.py` is
2929
## Installation of plotly.py Version 3
3030
To install plotly.py and enable Jupyter or Jupyter Lab support, run:
3131
```
32-
pip install plotly==3.1.0
32+
pip install plotly==3.1.1rc1
3333
pip install "notebook>=5.3" "ipywidgets>=7.2" # only necessary for Jupyter Notebook environments
3434
```
3535

@@ -43,11 +43,25 @@ jupyter nbextension enable --py plotlywidget --sys-prefix
4343
In addition, to add JupyterLab support run the following commands
4444

4545
```
46-
pip install jupyterlab==0.32.1
46+
pip install jupyterlab==0.33
47+
48+
# Avoid "JavaScript heap out of memory" errors during extension installation
49+
# (OS X/Linux)
4750
export NODE_OPTIONS=--max-old-space-size=4096
48-
jupyter labextension install @jupyter-widgets/[email protected] # install the Jupyter widgets extension
49-
jupyter labextension install [email protected] # FigureWidget support
50-
jupyter labextension install @jupyterlab/[email protected] # offline iplot support
51+
# (Windows)
52+
set NODE_OPTIONS=--max-old-space-size=4096
53+
54+
# Jupyter widgets extension
55+
jupyter labextension install @jupyter-widgets/[email protected] --no-build
56+
57+
# FigureWidget support
58+
jupyter labextension install [email protected] --no-build
59+
60+
# offline iplot support
61+
jupyter labextension install @jupyterlab/[email protected] --no-build
62+
63+
# Build extensions (must be done to activate extensions since --no-build is used above)
64+
jupyter lab build
5165
```
5266

5367
If you're migrating from plotly.py version 2, please check out the [migration guide](migration-guide.md)

contributing.md

+144-4
Original file line numberDiff line numberDiff line change
@@ -215,18 +215,153 @@ When you write a new test anywhere under the `tests` directory, if your PR gets
215215

216216
Test accounts include: `PythonTest`, `PlotlyImageTest`, and `PlotlyStageTest`.
217217

218-
#### Publishing to Pip
218+
### Release process
219+
220+
This is the release process for releasing `plotly.py` version `X.Y.Z` with
221+
`plotlywidget` version `A.B.C`.
222+
223+
Note: The `plotlywidget` instructions must be followed if any change
224+
has been made in the `js/` directory source code, OR if the version of
225+
plotly.js has been updated. If neither of these is the case, there's no need
226+
to increment the `plotlywidget` version or to publish a new version to npm.
227+
228+
#### Create a release branch
229+
After all of the functionality for the release has been merged into master,
230+
create a branch named `release_X.Y.Z`. This branch will become the
231+
final version
232+
233+
#### Bump to release candidate version
234+
Next increment the version of `plotly.py` to `X.Y.Zrc1`, and the version of
235+
`plotlywidget` to `A.B.C-rc.1`. In both cases `rc` is the semantic versioning
236+
code for Release Candidate. The number 1 means that this is the first release
237+
candidate, this number can be incremented if we need to publish multiple
238+
release candidates. Note that the `npm` suffix is `-rc.1` and the PyPI
239+
suffix is `rc1`.
240+
241+
- `plotly/version.py`:
242+
+ Update `__version__` to `X.Y.Zrc1`
243+
+ Update `__frontend_version__` to `^A.B.C-rc.1` (Note the `^` prefix)
244+
- `js/package.json`
245+
+ Update `"version"` to `A.B.C-rc.1`
246+
247+
Publishing `plotly.py` and `plotlywidget` as release candidates
248+
allows us to go through the publication process, and test that the
249+
installed packages work properly before general users will get them by
250+
default. It also gives us the opportunity to ask specific users to test
251+
that their bug reports are in fact resolved before we pull the trigger
252+
on the official release.
253+
254+
#### Finalize changelog
255+
Review the contents of `CHANGELOG.md`. We try to follow the
256+
[keepachangelog](https://keepachangelog.com/en/1.0.0/) guidelines. Make sure
257+
the changelog includes the version being published at the top, along with the
258+
expected publication date.
259+
260+
Use the `Added`, `Changed`, `Deprecated`, `Removed`, `Fixed`, and `Security`
261+
labels for all changes to plotly.py. If the version of plotly.js has
262+
been updated, include this as the first `Updated` entry. Call out any
263+
noteable changes as sub-bullets (new trace types in particular), and provide
264+
a link to the plotly.js CHANGELOG.
265+
266+
As the first entry in the changelog, include a `JupyterLab Versions` section.
267+
Here, document the versions of `plotlywidget`,
268+
`@jupyter-widgets/jupyterlab-manager`, `jupyterlab`, and
269+
`@jupyterlab/plotly-extension` that are known to be compatible with this
270+
version of `plotly.py`.
271+
272+
Note: Use the official (not release candidate) versions in the CHANGELOG.
273+
274+
#### Update README.md installation instructions
275+
276+
Update the installation instructions in the README to the new versions of all
277+
of the dependencies. Use the release candidate versions, this way we can point
278+
people to the README of the `release_X.Y.Z` as the instructions for trying out
279+
the release candidate.
280+
281+
#### Publish release candidate to PyPI
282+
To upload to PyPI you'll also need to have `twine` installed:
283+
```bash
284+
(plotly.py) $ pip install twine
285+
```
286+
287+
And, you'll need the credentials file `~/.pypirc`. Request access from
288+
@theengineear and @chriddyp. Then, from inside the repository:
289+
290+
```bash
291+
(plotly.py) $ git checkout release_X.Y.Z
292+
(plotly.py) $ git stash
293+
(plotly.py) $ python setup.py sdist bdist_wheel
294+
(plotly.py) $ twine upload dist/plotly-X.Y.Zrc1*
295+
```
296+
297+
#### Publish release candidate of `plotlywidget` to NPM
298+
Now, publish the release candidate of the `plotlywidget` NPM package.
299+
300+
```bash
301+
cd ./js
302+
npm publish --access public --tag next
303+
```
304+
305+
The `--tag next` part ensures that users won't install this version unless
306+
they explicitly ask for the version or for the version wtih the `next` tag.
219307

220-
You'll need the credentials file `~/.pypirc`. Request access from @theengineear and @chriddyp. Then, from inside the repository:
308+
#### Manually test the release candidate
309+
Create a fresh virtual environment (or conda environment) and install
310+
the release candidate by following the new `README.md` instructions,
311+
replacing `X.Y.Z` with `X.Y.Zrc1` and `A.B.C` with `A.B.C-rc.1`.
312+
313+
In particular
314+
- `pip install plotly==X.Y.Z` -> `pip install plotly==X.Y.Zrc1`
315+
- `jupyter labextension install [email protected]` ->
316+
`jupyter labextension install [email protected]`
317+
318+
Run through the example notebooks at
319+
https://github.com/jonmmease/plotly_ipywidget_notebooks using the classic
320+
notebook and JupyterLab. Make sure `FigureWidget` objects are displayed as
321+
plotly figures, and make sure the in-place updates and callbacks work.
322+
323+
If appropriate, ask users who have submitted bug reports or feature
324+
requests that are resolved in this version to try out the release candidate.
325+
326+
If problems are found in the release candidate, fix them on the release
327+
branch and then publish another release candidate with the candidate number
328+
incremented.
329+
330+
#### Finalize versions
331+
When no problems are identified in the release candidate, remove the
332+
release candidate suffix from the following version strings:
333+
334+
- `plotly/version.py`:
335+
+ Update `__version__` to `X.Y.Z`
336+
+ Update `__frontend_version__` to `^A.B.C` (Note the `^` prefix)
337+
- `js/package.json`
338+
+ Update `"version"` to `A.B.C`
339+
340+
#### Merge release into master
341+
Make sure the integration tests are passing on the release branch, then merge
342+
it into master on GitHub.
343+
344+
Update your local master, tag this merge commit as `vX.Y.Z`
345+
(e.g. `v3.1.1`), and push the tag.
221346

222347
```bash
223348
(plotly.py) $ git checkout master
224349
(plotly.py) $ git stash
225350
(plotly.py) $ git pull origin master
226-
(plotly.py) $ python setup.py sdist upload # upload to pip
351+
(plotly.py) $ git tag vX.Y.Z
352+
(plotly.py) $ git push origin vX.Y.Z
227353
```
228354

229-
After it has uploaded, move to another directly and double+triple check that you are able to upgrade ok:
355+
#### Publishing to Pip
356+
357+
Publish the final version to PyPI
358+
359+
```bash
360+
(plotly.py) $ python setup.py sdist bdist_wheel
361+
(plotly.py) $ twine upload dist/plotly-X.Y.Z*
362+
```
363+
364+
After it has uploaded, move to another environment and double+triple check that you are able to upgrade ok:
230365
```bash
231366
$ pip install plotly --upgrade
232367
```
@@ -236,11 +371,16 @@ And ask one of your friends to do it too. Our tests should catch any issues, but
236371
<3 Team Plotly
237372

238373
#### Publish widget library to npm
374+
Finally, publish the final version of the widget library to npm with:
239375

240376
```bash
241377
cd ./js
242378
npm publish --access public
243379
```
244380

381+
#### Post announcement
382+
Post a simple announcement to the Plotly Python forum, with links to the
383+
README installation instructions and to the CHANGELOG.
384+
245385
# Contributing to the Figure Factories
246386
If you are interested in contributing to the ever-growing Plotly figure factory library in Python, check out the [documentation](https://github.com/plotly/plotly.py/blob/master/plotly/figure_factory/README.md) to learn how.

js/package-lock.json

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "plotlywidget",
3-
"version": "0.2.0",
3+
"version": "0.2.1",
44
"description": "The plotly.py ipywidgets library",
55
"author": "The plotly.py team",
66
"license": "MIT",

plotly/version.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
__version__ = '3.1.0'
2-
__frontend_version__ = '^0.2.0'
1+
__version__ = '3.1.1'
2+
__frontend_version__ = '^0.2.1'
33

44

55
def stable_semver():

setup.cfg

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
11
[metadata]
2-
description-file = README.rst
2+
description-file = README.rst
3+
4+
[bdist_wheel]
5+
universal=1

0 commit comments

Comments
 (0)