Skip to content

Commit 45fdece

Browse files
Merge pull request #3142 from fcollonval/fcollonval/issue3036
Refactor JupyterLab JS extensions and package as federated extension
2 parents 9c8e1f5 + 38d0b36 commit 45fdece

Some content is hidden

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

42 files changed

+13439
-240930
lines changed

.circleci/config.yml

+4-11
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,7 @@ jobs:
165165
environment:
166166
PERCY_ENABLED: True
167167
PERCY_PROJECT: plotly/plotly.py
168+
resource_class: large
168169

169170
steps:
170171
- checkout
@@ -196,6 +197,7 @@ jobs:
196197
python_37_chart_studio:
197198
docker:
198199
- image: circleci/python:3.7-stretch-node-browsers
200+
resource_class: large
199201

200202
steps:
201203
- checkout
@@ -212,12 +214,13 @@ jobs:
212214
- image: circleci/python:3.7-stretch-node-browsers
213215
environment:
214216
LANG: en_US.UTF-8
217+
resource_class: large
215218

216219
steps:
217220
- checkout
218221
- run:
219222
name: Install dependencies
220-
command: "cd packages/python; sudo pip install -r ./plotly/test_requirements/requirements_37_core.txt black inflect"
223+
command: "cd packages/python; sudo pip install -r ./plotly/test_requirements/requirements_37_core.txt black inflect; sudo pip install jupyterlab~=3.0"
221224
- run:
222225
name: Update jupyterlab-plotly version
223226
command: "cd packages/python/plotly; python setup.py updateplotlywidgetversion"
@@ -232,7 +235,6 @@ jobs:
232235
name: Commit
233236
command: |
234237
cd packages/python/plotly
235-
sudo mkdir /dist
236238
git config --global user.email "[email protected]"
237239
git config --global user.name "Your Name"
238240
git add -A
@@ -243,15 +245,6 @@ jobs:
243245
command: |
244246
cd packages/python/plotly
245247
python setup.py sdist
246-
sudo cp dist/* /dist
247-
when: always
248-
- run:
249-
name: npm-pack widget
250-
command: |
251-
cd packages/javascript/jupyterlab-plotly/
252-
npm install webpack
253-
npm pack
254-
sudo cp ./jupyterlab-plotly* /dist
255248
when: always
256249
- store_artifacts:
257250
path: packages/python/plotly/dist

.gitignore

+4
Original file line numberDiff line numberDiff line change
@@ -48,3 +48,7 @@ doc/python/.mapbox_token
4848
doc/.ipynb_checkpoints
4949
tags
5050
doc/check-or-enforce-order.py
51+
52+
packages/javascript/jupyterlab-plotly/lib/
53+
packages/python/plotly/jupyterlab_plotly/labextension/
54+
packages/python/plotly/jupyterlab_plotly/nbextension/index.js*

README.md

+19-19
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ Our recommended IDE for Plotly’s Python graphing library is Dash Enterprise’
3939

4040
`pip install plotly==4.14.3`
4141

42-
Inside [Jupyter notebook](https://jupyter.org/install) (installable with `pip install "notebook>=5.3" "ipywidgets>=7.5"`):
42+
Inside [Jupyter](https://jupyter.org/install) (installable with `pip install "jupyterlab>=3" "ipywidgets>=7.6"`):
4343

4444
```python
4545
import plotly.graph_objects as go
@@ -95,37 +95,22 @@ or conda.
9595
conda install -c plotly plotly=4.14.3
9696
```
9797

98-
### Jupyter Notebook Support
99-
100-
For use in the Jupyter Notebook, install the `notebook` and `ipywidgets`
101-
packages using `pip`:
102-
103-
```
104-
pip install "notebook>=5.3" "ipywidgets>=7.5"
105-
```
106-
107-
or `conda`:
108-
109-
```
110-
conda install "notebook>=5.3" "ipywidgets>=7.5"
111-
```
112-
11398
### JupyterLab Support
11499

115100
For use in JupyterLab, install the `jupyterlab` and `ipywidgets`
116101
packages using `pip`:
117102

118103
```
119-
pip install jupyterlab "ipywidgets>=7.5"
104+
pip install jupyterlab>=3 "ipywidgets>=7.6"
120105
```
121106

122107
or `conda`:
123108

124109
```
125-
conda install jupyterlab "ipywidgets>=7.5"
110+
conda install jupyterlab>=3 "ipywidgets>=7.6"
126111
```
127112

128-
Then run the following commands to install the required JupyterLab extensions (note that this will require [`node`](https://nodejs.org/) to be installed):
113+
For JupyterLab 2 or earlier, run the following commands to install the required JupyterLab extensions (note that this will require [`node`](https://nodejs.org/) to be installed):
129114

130115
```
131116
# Basic JupyterLab renderer support
@@ -137,6 +122,21 @@ jupyter labextension install @jupyter-widgets/jupyterlab-manager plotlywidget@4.
137122

138123
Please check out our [Troubleshooting guide](https://plotly.com/python/troubleshooting/) if you run into any problems with JupyterLab.
139124

125+
### Jupyter Notebook Support
126+
127+
For use in the Jupyter Notebook, install the `notebook` and `ipywidgets`
128+
packages using `pip`:
129+
130+
```
131+
pip install "notebook>=5.3" "ipywidgets>=7.5"
132+
```
133+
134+
or `conda`:
135+
136+
```
137+
conda install "notebook>=5.3" "ipywidgets>=7.5"
138+
```
139+
140140
### Static Image Export
141141

142142
plotly.py supports [static image export](https://plotly.com/python/static-image-export/),

doc/python/getting-started.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -144,16 +144,16 @@ For use in [JupyterLab](https://jupyterlab.readthedocs.io/en/stable/), install t
144144
packages using `pip`:
145145

146146
```
147-
$ pip install jupyterlab "ipywidgets>=7.5"
147+
$ pip install jupyterlab "ipywidgets>=7.6"
148148
```
149149

150150
or `conda`:
151151

152152
```
153-
$ conda install jupyterlab "ipywidgets>=7.5"
153+
$ conda install jupyterlab "ipywidgets>=7.6"
154154
```
155155

156-
Then run the following commands to install the required JupyterLab extensions (note that this will require [`node`](https://nodejs.org/) to be installed):
156+
For JupyterLab 2 or earlier, run the following commands to install the required JupyterLab extensions (note that this will require [`node`](https://nodejs.org/) to be installed):
157157

158158
```
159159
# JupyterLab renderer support

doc/python/renderers.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ fig
7272

7373
> To be precise, figures will display themselves using the current default renderer when the two following conditions are true. First, the last expression in a cell must evaluate to a figure. Second, `plotly.py` must be running from within an `IPython` kernel.
7474
75-
**In many contexts, an appropriate renderer will be chosen automatically and you will not need to perform any additional configuration.** These contexts include the classic [Jupyter Notebook](https://jupyter.org/), [JupyterLab](https://jupyterlab.readthedocs.io/en/stable/) (provided the `jupyterlab-plotly` JupyterLab extension is installed), [Visual Studio Code notebooks](https://code.visualstudio.com/docs/python/jupyter-support), [Google Colaboratory](https://colab.research.google.com/notebooks/intro.ipynb), [Kaggle](https://www.kaggle.com/kernels) notebooks, [Azure](https://notebooks.azure.com/) notebooks, and the [Python interactive shell](https://www.python.org/shell/).
75+
**In many contexts, an appropriate renderer will be chosen automatically and you will not need to perform any additional configuration.** These contexts include the classic [Jupyter Notebook](https://jupyter.org/), [JupyterLab](https://jupyterlab.readthedocs.io/en/stable/) (provided the `plotlywidget` JupyterLab extension is installed), [Visual Studio Code notebooks](https://code.visualstudio.com/docs/python/jupyter-support), [Google Colaboratory](https://colab.research.google.com/notebooks/intro.ipynb), [Kaggle](https://www.kaggle.com/kernels) notebooks, [Azure](https://notebooks.azure.com/) notebooks, and the [Python interactive shell](https://www.python.org/shell/).
7676

7777
Additional contexts are supported by choosing a compatible renderer including the [IPython console](https://docs.spyder-ide.org/ipythonconsole.html), [QtConsole](https://qtconsole.readthedocs.io/en/stable/), [Spyder](https://www.spyder-ide.org/), and more.
7878

@@ -169,7 +169,7 @@ This renderer may be useful when working with notebooks than contain lots of lar
169169

170170
###### `plotly_mimetype`
171171

172-
The `plotly_mimetype` renderer creates a specification of the figure (called a MIME-type bundle), and requests that the current user interface displays it. User interfaces that support this renderer include [JupyterLab](https://jupyterlab.readthedocs.io/en/stable/) (requires the [`jupyterlab-plotly`](https://www.npmjs.com/package/jupyterlab-plotly) extension), [nteract](https://nteract.io/), and the Visual Studio Code [notebook interface](https://code.visualstudio.com/docs/python/jupyter-support).
172+
The `plotly_mimetype` renderer creates a specification of the figure (called a MIME-type bundle), and requests that the current user interface displays it. User interfaces that support this renderer include [JupyterLab](https://jupyterlab.readthedocs.io/en/stable/) (requires the [`plotlywidget`](https://www.npmjs.com/package/plotlywidget) extension), [nteract](https://nteract.io/), and the Visual Studio Code [notebook interface](https://code.visualstudio.com/docs/python/jupyter-support).
173173

174174
###### `jupyterlab`, `nteract`, and `vscode`
175175
These are aliases for `plotly_mimetype` since this renderer is a good choice when working in JupyterLab, nteract, and the Visual Studio Code notebook interface. Note that in VSCode Notebooks, the version of Plotly.js that is used to render is provided by the [vscode-python extension](https://code.visualstudio.com/docs/languages/python) and often trails the latest version by several weeks, so the latest features of `plotly` may not be available in VSCode right away. The situation is similar for Nteract.

doc/python/troubleshooting.md

+10-3
Original file line numberDiff line numberDiff line change
@@ -65,15 +65,23 @@ IFrame(snippet_url + 'renderers', width='100%', height=630)
6565

6666
### JupyterLab Problems
6767

68-
In order to use `plotly` in JupyterLab, you *must have the extensions installed* as detailed in the [Getting Started guide](/python/getting-started). There are two extensions: `jupyterlab-plotly` for rendering figures with `fig.show()` and `plotlywidget` for the `FigureWidget`. Please note that the *extension version matters*: the extension versions in the [Getting Started](/python/getting-started) guide match the version of `plotly` at the top of the guide and so they should be installed together.
68+
In order to use `plotly` in JupyterLab, you *must have the extensions installed* as detailed in the [Getting Started guide](/python/getting-started). There is one extension: `plotlywidget`. Please note that the *extension version matters*: the extension versions in the [Getting Started](/python/getting-started) guide match the version of `plotly` at the top of the guide and so they should be installed together. Note also that these extensions are meant to work with JupyterLab 1 or above but not 0.x.
6969

7070
To list your current extensions, run the following command in a terminal shell **from the same environment as JupyterLab was launched**:
7171

7272
```bash
7373
$ jupyter labextension list
7474
```
7575

76-
If you have [installed additional python environments](https://ipython.readthedocs.io/en/stable/install/kernel_install.html) (or kernels) to use with JupyterLab, or if you are using a centrally hosted JupyterLab installation, you need to make sure that the extensions are installed in the python environment used to launch JupyterLab (the "server" environment). If you accidentally installed the extensions (and run the command above) in one of the additional python environments ("processing" environments), then it is possible for the command above to list the correct extensions but for them to not be available in the JupyterLab front-end you have loaded in your browser. To check if this is the problem, you can [look at the active extension list through your browser via the JupyterLab Extension Manager](https://jupyterlab.readthedocs.io/en/stable/user/extensions.html#using-the-extension-manager), which will always list the extensions in the "server" environment. To summarize: if you use JupyterLab with multiple python environments, the extensions must be installed in the "server" environment, and the plotly python library must be installed in each "processing" environment that you intend to use.
76+
If you have [installed additional python environments](https://ipython.readthedocs.io/en/stable/install/kernel_install.html) (or kernels) to use with JupyterLab, or if you are using a centrally hosted JupyterLab installation, you need to make sure that the extensions are installed in the python environment used to launch JupyterLab (the "server" environment). If you accidentally installed the extensions (and run the command above) in one of the additional python environments ("processing" environments), then it is possible for the command above to list the correct extensions but for them to not be available in the JupyterLab front-end you have loaded in your browser. To check if this is the problem, you can [look at the active extension list through your browser via the JupyterLab Extension Manager](https://jupyterlab.readthedocs.io/en/stable/user/extensions.html#using-the-extension-manager), which will always list the extensions in the "server" environment. To summarize: if you use JupyterLab with multiple python environments, the extensions must be installed in the "server" environment, and the plotly python library must be installed in each "processing" environment that you intend to use.
77+
78+
> Version 4.14.3 or earlier needed two extensions (`jupyterlab-plotly` and `plotlywidget`) to be installed manually running:
79+
80+
```bash
81+
$ jupyter labextension install jupyterlab-plotly @jupyter-widgets/jupyterlab-manager plotlywidget
82+
```
83+
84+
#### JupyterLab 2 and earlier
7785

7886
If you have the correct version of the extensions installed and active in your active JupyterLab sessions and are still seeing problems, the issue may clear up if you rebuild JupyterLab. This shouldn't be required in principle but many users have resolved their issues this way. To rebuild JupyterLab, shut down JupyterLab and run the following command in a terminal shell **from the same environment as JupyterLab was launched**:
7987

@@ -84,7 +92,6 @@ $ jupyter lab build
8492
To uninstall your Plotly extensions prior to reinstalling them, run the following commands in a terminal shell before reinstalling them by following the instructions in the [Getting Started guide](/python/getting-started):
8593

8694
```bash
87-
$ jupyter labextension uninstall jupyterlab-plotly
8895
$ jupyter labextension uninstall plotlywidget
8996
```
9097

Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
JupyterLab Extension for Plotly.py
1+
Jupyter Extension for Plotly.py
22

33
See https://plot.ly/python/getting-started/ for details.
44

5-
Install with `jupyter labextension install jupyterlab-plotly`
5+
Install with `jupyter labextension install plotlywidget` in JupyterLab, otherwise
6+
just install Plotly.py and it will automatically work in Classic Notebooks.

0 commit comments

Comments
 (0)