Drop notebook 6 - #4822

Merged
marthacryan merged 21 commits into
anywidgetfrom
drop-notebook-6
Nov 4, 2024
Merged

Drop notebook 6#4822
marthacryan merged 21 commits into
anywidgetfrom
drop-notebook-6

Conversation

@marthacryan

@marthacryanmarthacryan commented Oct 22, 2024

Copy link
Copy Markdown
Contributor

Note: this PR is on top of the changes from #4823 because the plotly.js version used in plotly.py is based on the jupyterlab extension code, and we needed a new place to store the plotly.js version. The widget seemed like a good place because all of the other javascript is removed in this PR.

Fixes#4779.

It appears that the entire packages/javascript/jupyterlab_plotly directory contains code that is either used to support very old versions of jupyter lab/notebook/voila, or is not used at all. This PR removes the entire directory in favor of having a very small packages/python/plotly/js directory that contains only the widget code (see #4663 for adding the widget code into that directory).

The last time that the jupyter extension was significantly changed was 3 years ago in #3142. @fcollonval described the files in the packages/javascript/jupyterlab_plotly directory in this comment. He did add support for federated extensions (new jupyter lab/notebook build), but I wasn't able to find evidence that having an extension installed in jupyterlab >=3 or jupyter notebook >= 7 is even necessary for plotly. @fcollonval if you know of any reason that that isn't true, please let me know!

To test:

  • Checkout branch
  • Create a new python env (conda, mamba, pipenv, etc)
  • git clean -f -x -d
  • cd packages/python/plotly
  • pip install -e .
  • pip install jupyter
  • Try it out in jupyter lab: jupyter lab
  • Try it out in jupyter notebook: jupyter notebook

@fcollonval

Copy link
Copy Markdown
Contributor

I wasn't able to find evidence that having an extension installed in jupyterlab >=3 or jupyter notebook >= 7 is even necessary for plotly

This is correct because the produced output is using html that will includes plotly.js the first time:

classNotebookRenderer(HtmlRenderer):

Dropping the mimerenderer factory will prevent plotly.json file to be opened in JupyterLab.

@marthacryan

Copy link
Copy Markdown
ContributorAuthor

@fcollonval Thank you for the response! Also hi!

@marthacryan
marthacryan marked this pull request as ready for review October 23, 2024 21:59
@gvwilsongvwilson added feature something new P1 needed for current cycle labels Oct 24, 2024
@archmoj

Copy link
Copy Markdown
Contributor

This is looking good to me.
@marthacryan Would you please add a changelog entry?

@LiamConnors

Copy link
Copy Markdown
Contributor

@marthacryan, testing the FigureWidget in Notebook 7 and I get a JavaScript error:

Code is

import plotly.graph_objects as go
f = go.FigureWidget()
f
image

I have anywidget=0.9.13

@marthacryan

Copy link
Copy Markdown
ContributorAuthor

@LiamConnors Looks like this wasn't happening for me because I hadn't added the npm install && npm run build step into pip install -e ., so the necessary javascript wasn't generated! I'll look into adding that

@LiamConnors

LiamConnors commented Oct 24, 2024

Copy link
Copy Markdown
Contributor

In VS Code, I see this:

image

Not really sure what to make of it. I'm using the same environment as in a notebook launched in the browser.

I've commented here as I'm testing off this branch, but I guess this may be more related to #4823

Comment threadREADME.md
Comment on lines +116 to +118
### Jupyter Widget Support

For use in the Jupyter Notebook, install the `notebook` and `ipywidgets`
For use as a Jupyter widget, install `jupyter` and `anywidget`

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The section above this talks about "JupyterLab Support" and should now mention anywidget. Wondering if this section should stay as "Jupyter Notebook Support"

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think maybe they should be combined. The usage is almost identical for jupyter Notebook and JupyterLab

@marthacryan
marthacryan merged commit ee67f2e into anywidgetNov 4, 2024
@marthacryan
marthacryan deleted the drop-notebook-6 branch November 4, 2024 16:03
elif "jupyter-lab" in parent_process and jupyter_lab.__version__ < "3":
# Add warning about upgrading jupyterlab
warnings.warn(
f"Plotly version >= 6 requires JupyterLab >= 3 but you have {jupyter_lab.__version__} installed. To upgrade JupyterLab, please run `pip install jupyterlab --upgrade`."

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe put this in FigureWidget instead?

bmwiedemann pushed a commit to bmwiedemann/openSUSE that referenced this pull request Jun 23, 2025
https://build.opensuse.org/request/show/1287194
by user bnavigator + anag_factory
- Drop upstream patch plotly-pr4622-np2.patch
- Remove jupyter sub-package, not part of the package anymore after
the switch to anywidget gh#plotly/plotly.py#4823
- Remove notebook from jupyter package, as part of jupyter notebook 6
drop, gh#plotly/plotly.py#4822
- Update to 6.1.2 (CVE-2025-5889, bsc#1244347)
* Fix type checking and code highlighting for graph_objects classes [#5199]
- Release 6.1.1
* Prevent swallowing of ValueError when creating a figure with
subplots [#3888]
* Fix issue causing fig.write_image() to not generate an image
[#5193]
- Release 6.1.0
## Updated
* Add support for Kaleido>=v1.0.0 for image generation [#5062, #5177]
* Reduce package bundle size by 18-24% via changes to code
generation [#4978]
## Fixed
* Fix third-party widget displa
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

featuresomething newP1needed for current cycle

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@marthacryan@fcollonval@archmoj@LiamConnors@gvwilson
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Drop notebook 6 - #4822

Merged
marthacryan merged 21 commits into
anywidgetfrom
drop-notebook-6
Nov 4, 2024
Merged

Drop notebook 6#4822
marthacryan merged 21 commits into
anywidgetfrom
drop-notebook-6

Conversation

@marthacryan

@marthacryanmarthacryan commented Oct 22, 2024

Copy link
Copy Markdown
Contributor

Note: this PR is on top of the changes from #4823 because the plotly.js version used in plotly.py is based on the jupyterlab extension code, and we needed a new place to store the plotly.js version. The widget seemed like a good place because all of the other javascript is removed in this PR.

Fixes#4779.

It appears that the entire packages/javascript/jupyterlab_plotly directory contains code that is either used to support very old versions of jupyter lab/notebook/voila, or is not used at all. This PR removes the entire directory in favor of having a very small packages/python/plotly/js directory that contains only the widget code (see #4663 for adding the widget code into that directory).

The last time that the jupyter extension was significantly changed was 3 years ago in #3142. @fcollonval described the files in the packages/javascript/jupyterlab_plotly directory in this comment. He did add support for federated extensions (new jupyter lab/notebook build), but I wasn't able to find evidence that having an extension installed in jupyterlab >=3 or jupyter notebook >= 7 is even necessary for plotly. @fcollonval if you know of any reason that that isn't true, please let me know!

To test:

  • Checkout branch
  • Create a new python env (conda, mamba, pipenv, etc)
  • git clean -f -x -d
  • cd packages/python/plotly
  • pip install -e .
  • pip install jupyter
  • Try it out in jupyter lab: jupyter lab
  • Try it out in jupyter notebook: jupyter notebook

@fcollonval

Copy link
Copy Markdown
Contributor

I wasn't able to find evidence that having an extension installed in jupyterlab >=3 or jupyter notebook >= 7 is even necessary for plotly

This is correct because the produced output is using html that will includes plotly.js the first time:

classNotebookRenderer(HtmlRenderer):

Dropping the mimerenderer factory will prevent plotly.json file to be opened in JupyterLab.

@marthacryan

Copy link
Copy Markdown
ContributorAuthor

@fcollonval Thank you for the response! Also hi!

@marthacryan
marthacryan marked this pull request as ready for review October 23, 2024 21:59
@gvwilsongvwilson added feature something new P1 needed for current cycle labels Oct 24, 2024
@archmoj

Copy link
Copy Markdown
Contributor

This is looking good to me.
@marthacryan Would you please add a changelog entry?

@LiamConnors

Copy link
Copy Markdown
Contributor

@marthacryan, testing the FigureWidget in Notebook 7 and I get a JavaScript error:

Code is

import plotly.graph_objects as go
f = go.FigureWidget()
f
image

I have anywidget=0.9.13

@marthacryan

Copy link
Copy Markdown
ContributorAuthor

@LiamConnors Looks like this wasn't happening for me because I hadn't added the npm install && npm run build step into pip install -e ., so the necessary javascript wasn't generated! I'll look into adding that

@LiamConnors

LiamConnors commented Oct 24, 2024

Copy link
Copy Markdown
Contributor

In VS Code, I see this:

image

Not really sure what to make of it. I'm using the same environment as in a notebook launched in the browser.

I've commented here as I'm testing off this branch, but I guess this may be more related to #4823

Comment threadREADME.md
Comment on lines +116 to +118
### Jupyter Widget Support

For use in the Jupyter Notebook, install the `notebook` and `ipywidgets`
For use as a Jupyter widget, install `jupyter` and `anywidget`

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The section above this talks about "JupyterLab Support" and should now mention anywidget. Wondering if this section should stay as "Jupyter Notebook Support"

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think maybe they should be combined. The usage is almost identical for jupyter Notebook and JupyterLab

@marthacryan
marthacryan merged commit ee67f2e into anywidgetNov 4, 2024
@marthacryan
marthacryan deleted the drop-notebook-6 branch November 4, 2024 16:03
elif "jupyter-lab" in parent_process and jupyter_lab.__version__ < "3":
# Add warning about upgrading jupyterlab
warnings.warn(
f"Plotly version >= 6 requires JupyterLab >= 3 but you have {jupyter_lab.__version__} installed. To upgrade JupyterLab, please run `pip install jupyterlab --upgrade`."

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe put this in FigureWidget instead?

bmwiedemann pushed a commit to bmwiedemann/openSUSE that referenced this pull request Jun 23, 2025
https://build.opensuse.org/request/show/1287194
by user bnavigator + anag_factory
- Drop upstream patch plotly-pr4622-np2.patch
- Remove jupyter sub-package, not part of the package anymore after
the switch to anywidget gh#plotly/plotly.py#4823
- Remove notebook from jupyter package, as part of jupyter notebook 6
drop, gh#plotly/plotly.py#4822
- Update to 6.1.2 (CVE-2025-5889, bsc#1244347)
* Fix type checking and code highlighting for graph_objects classes [#5199]
- Release 6.1.1
* Prevent swallowing of ValueError when creating a figure with
subplots [#3888]
* Fix issue causing fig.write_image() to not generate an image
[#5193]
- Release 6.1.0
## Updated
* Add support for Kaleido>=v1.0.0 for image generation [#5062, #5177]
* Reduce package bundle size by 18-24% via changes to code
generation [#4978]
## Fixed
* Fix third-party widget displa
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

featuresomething newP1needed for current cycle

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@marthacryan@fcollonval@archmoj@LiamConnors@gvwilson
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Drop notebook 6 - #4822

Merged
marthacryan merged 21 commits into
anywidgetfrom
drop-notebook-6
Nov 4, 2024
Merged

Drop notebook 6#4822
marthacryan merged 21 commits into
anywidgetfrom
drop-notebook-6

Conversation

@marthacryan

@marthacryanmarthacryan commented Oct 22, 2024

Copy link
Copy Markdown
Contributor

Note: this PR is on top of the changes from #4823 because the plotly.js version used in plotly.py is based on the jupyterlab extension code, and we needed a new place to store the plotly.js version. The widget seemed like a good place because all of the other javascript is removed in this PR.

Fixes#4779.

It appears that the entire packages/javascript/jupyterlab_plotly directory contains code that is either used to support very old versions of jupyter lab/notebook/voila, or is not used at all. This PR removes the entire directory in favor of having a very small packages/python/plotly/js directory that contains only the widget code (see #4663 for adding the widget code into that directory).

The last time that the jupyter extension was significantly changed was 3 years ago in #3142. @fcollonval described the files in the packages/javascript/jupyterlab_plotly directory in this comment. He did add support for federated extensions (new jupyter lab/notebook build), but I wasn't able to find evidence that having an extension installed in jupyterlab >=3 or jupyter notebook >= 7 is even necessary for plotly. @fcollonval if you know of any reason that that isn't true, please let me know!

To test:

  • Checkout branch
  • Create a new python env (conda, mamba, pipenv, etc)
  • git clean -f -x -d
  • cd packages/python/plotly
  • pip install -e .
  • pip install jupyter
  • Try it out in jupyter lab: jupyter lab
  • Try it out in jupyter notebook: jupyter notebook

@fcollonval

Copy link
Copy Markdown
Contributor

I wasn't able to find evidence that having an extension installed in jupyterlab >=3 or jupyter notebook >= 7 is even necessary for plotly

This is correct because the produced output is using html that will includes plotly.js the first time:

classNotebookRenderer(HtmlRenderer):

Dropping the mimerenderer factory will prevent plotly.json file to be opened in JupyterLab.

@marthacryan

Copy link
Copy Markdown
ContributorAuthor

@fcollonval Thank you for the response! Also hi!

@marthacryan
marthacryan marked this pull request as ready for review October 23, 2024 21:59
@gvwilsongvwilson added feature something new P1 needed for current cycle labels Oct 24, 2024
@archmoj

Copy link
Copy Markdown
Contributor

This is looking good to me.
@marthacryan Would you please add a changelog entry?

@LiamConnors

Copy link
Copy Markdown
Contributor

@marthacryan, testing the FigureWidget in Notebook 7 and I get a JavaScript error:

Code is

import plotly.graph_objects as go
f = go.FigureWidget()
f
image

I have anywidget=0.9.13

@marthacryan

Copy link
Copy Markdown
ContributorAuthor

@LiamConnors Looks like this wasn't happening for me because I hadn't added the npm install && npm run build step into pip install -e ., so the necessary javascript wasn't generated! I'll look into adding that

@LiamConnors

LiamConnors commented Oct 24, 2024

Copy link
Copy Markdown
Contributor

In VS Code, I see this:

image

Not really sure what to make of it. I'm using the same environment as in a notebook launched in the browser.

I've commented here as I'm testing off this branch, but I guess this may be more related to #4823

Comment threadREADME.md
Comment on lines +116 to +118
### Jupyter Widget Support

For use in the Jupyter Notebook, install the `notebook` and `ipywidgets`
For use as a Jupyter widget, install `jupyter` and `anywidget`

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The section above this talks about "JupyterLab Support" and should now mention anywidget. Wondering if this section should stay as "Jupyter Notebook Support"

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think maybe they should be combined. The usage is almost identical for jupyter Notebook and JupyterLab

@marthacryan
marthacryan merged commit ee67f2e into anywidgetNov 4, 2024
@marthacryan
marthacryan deleted the drop-notebook-6 branch November 4, 2024 16:03
elif "jupyter-lab" in parent_process and jupyter_lab.__version__ < "3":
# Add warning about upgrading jupyterlab
warnings.warn(
f"Plotly version >= 6 requires JupyterLab >= 3 but you have {jupyter_lab.__version__} installed. To upgrade JupyterLab, please run `pip install jupyterlab --upgrade`."

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe put this in FigureWidget instead?

bmwiedemann pushed a commit to bmwiedemann/openSUSE that referenced this pull request Jun 23, 2025
https://build.opensuse.org/request/show/1287194
by user bnavigator + anag_factory
- Drop upstream patch plotly-pr4622-np2.patch
- Remove jupyter sub-package, not part of the package anymore after
the switch to anywidget gh#plotly/plotly.py#4823
- Remove notebook from jupyter package, as part of jupyter notebook 6
drop, gh#plotly/plotly.py#4822
- Update to 6.1.2 (CVE-2025-5889, bsc#1244347)
* Fix type checking and code highlighting for graph_objects classes [#5199]
- Release 6.1.1
* Prevent swallowing of ValueError when creating a figure with
subplots [#3888]
* Fix issue causing fig.write_image() to not generate an image
[#5193]
- Release 6.1.0
## Updated
* Add support for Kaleido>=v1.0.0 for image generation [#5062, #5177]
* Reduce package bundle size by 18-24% via changes to code
generation [#4978]
## Fixed
* Fix third-party widget displa
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

featuresomething newP1needed for current cycle

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@marthacryan@fcollonval@archmoj@LiamConnors@gvwilson
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Drop notebook 6 - #4822

Merged
marthacryan merged 21 commits into
anywidgetfrom
drop-notebook-6
Nov 4, 2024
Merged

Drop notebook 6#4822
marthacryan merged 21 commits into
anywidgetfrom
drop-notebook-6

Conversation

@marthacryan

@marthacryanmarthacryan commented Oct 22, 2024

Copy link
Copy Markdown
Contributor

Note: this PR is on top of the changes from #4823 because the plotly.js version used in plotly.py is based on the jupyterlab extension code, and we needed a new place to store the plotly.js version. The widget seemed like a good place because all of the other javascript is removed in this PR.

Fixes#4779.

It appears that the entire packages/javascript/jupyterlab_plotly directory contains code that is either used to support very old versions of jupyter lab/notebook/voila, or is not used at all. This PR removes the entire directory in favor of having a very small packages/python/plotly/js directory that contains only the widget code (see #4663 for adding the widget code into that directory).

The last time that the jupyter extension was significantly changed was 3 years ago in #3142. @fcollonval described the files in the packages/javascript/jupyterlab_plotly directory in this comment. He did add support for federated extensions (new jupyter lab/notebook build), but I wasn't able to find evidence that having an extension installed in jupyterlab >=3 or jupyter notebook >= 7 is even necessary for plotly. @fcollonval if you know of any reason that that isn't true, please let me know!

To test:

  • Checkout branch
  • Create a new python env (conda, mamba, pipenv, etc)
  • git clean -f -x -d
  • cd packages/python/plotly
  • pip install -e .
  • pip install jupyter
  • Try it out in jupyter lab: jupyter lab
  • Try it out in jupyter notebook: jupyter notebook

@fcollonval

Copy link
Copy Markdown
Contributor

I wasn't able to find evidence that having an extension installed in jupyterlab >=3 or jupyter notebook >= 7 is even necessary for plotly

This is correct because the produced output is using html that will includes plotly.js the first time:

classNotebookRenderer(HtmlRenderer):

Dropping the mimerenderer factory will prevent plotly.json file to be opened in JupyterLab.

@marthacryan

Copy link
Copy Markdown
ContributorAuthor

@fcollonval Thank you for the response! Also hi!

@marthacryan
marthacryan marked this pull request as ready for review October 23, 2024 21:59
@gvwilsongvwilson added feature something new P1 needed for current cycle labels Oct 24, 2024
@archmoj

Copy link
Copy Markdown
Contributor

This is looking good to me.
@marthacryan Would you please add a changelog entry?

@LiamConnors

Copy link
Copy Markdown
Contributor

@marthacryan, testing the FigureWidget in Notebook 7 and I get a JavaScript error:

Code is

import plotly.graph_objects as go
f = go.FigureWidget()
f
image

I have anywidget=0.9.13

@marthacryan

Copy link
Copy Markdown
ContributorAuthor

@LiamConnors Looks like this wasn't happening for me because I hadn't added the npm install && npm run build step into pip install -e ., so the necessary javascript wasn't generated! I'll look into adding that

@LiamConnors

LiamConnors commented Oct 24, 2024

Copy link
Copy Markdown
Contributor

In VS Code, I see this:

image

Not really sure what to make of it. I'm using the same environment as in a notebook launched in the browser.

I've commented here as I'm testing off this branch, but I guess this may be more related to #4823

Comment threadREADME.md
Comment on lines +116 to +118
### Jupyter Widget Support

For use in the Jupyter Notebook, install the `notebook` and `ipywidgets`
For use as a Jupyter widget, install `jupyter` and `anywidget`

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The section above this talks about "JupyterLab Support" and should now mention anywidget. Wondering if this section should stay as "Jupyter Notebook Support"

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think maybe they should be combined. The usage is almost identical for jupyter Notebook and JupyterLab

@marthacryan
marthacryan merged commit ee67f2e into anywidgetNov 4, 2024
@marthacryan
marthacryan deleted the drop-notebook-6 branch November 4, 2024 16:03
elif "jupyter-lab" in parent_process and jupyter_lab.__version__ < "3":
# Add warning about upgrading jupyterlab
warnings.warn(
f"Plotly version >= 6 requires JupyterLab >= 3 but you have {jupyter_lab.__version__} installed. To upgrade JupyterLab, please run `pip install jupyterlab --upgrade`."

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe put this in FigureWidget instead?

bmwiedemann pushed a commit to bmwiedemann/openSUSE that referenced this pull request Jun 23, 2025
https://build.opensuse.org/request/show/1287194
by user bnavigator + anag_factory
- Drop upstream patch plotly-pr4622-np2.patch
- Remove jupyter sub-package, not part of the package anymore after
the switch to anywidget gh#plotly/plotly.py#4823
- Remove notebook from jupyter package, as part of jupyter notebook 6
drop, gh#plotly/plotly.py#4822
- Update to 6.1.2 (CVE-2025-5889, bsc#1244347)
* Fix type checking and code highlighting for graph_objects classes [#5199]
- Release 6.1.1
* Prevent swallowing of ValueError when creating a figure with
subplots [#3888]
* Fix issue causing fig.write_image() to not generate an image
[#5193]
- Release 6.1.0
## Updated
* Add support for Kaleido>=v1.0.0 for image generation [#5062, #5177]
* Reduce package bundle size by 18-24% via changes to code
generation [#4978]
## Fixed
* Fix third-party widget displa
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

featuresomething newP1needed for current cycle

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@marthacryan@fcollonval@archmoj@LiamConnors@gvwilson
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Drop notebook 6 - #4822

Merged
marthacryan merged 21 commits into
anywidgetfrom
drop-notebook-6
Nov 4, 2024
Merged

Drop notebook 6#4822
marthacryan merged 21 commits into
anywidgetfrom
drop-notebook-6

Conversation

@marthacryan

@marthacryanmarthacryan commented Oct 22, 2024

Copy link
Copy Markdown
Contributor

Note: this PR is on top of the changes from #4823 because the plotly.js version used in plotly.py is based on the jupyterlab extension code, and we needed a new place to store the plotly.js version. The widget seemed like a good place because all of the other javascript is removed in this PR.

Fixes#4779.

It appears that the entire packages/javascript/jupyterlab_plotly directory contains code that is either used to support very old versions of jupyter lab/notebook/voila, or is not used at all. This PR removes the entire directory in favor of having a very small packages/python/plotly/js directory that contains only the widget code (see #4663 for adding the widget code into that directory).

The last time that the jupyter extension was significantly changed was 3 years ago in #3142. @fcollonval described the files in the packages/javascript/jupyterlab_plotly directory in this comment. He did add support for federated extensions (new jupyter lab/notebook build), but I wasn't able to find evidence that having an extension installed in jupyterlab >=3 or jupyter notebook >= 7 is even necessary for plotly. @fcollonval if you know of any reason that that isn't true, please let me know!

To test:

  • Checkout branch
  • Create a new python env (conda, mamba, pipenv, etc)
  • git clean -f -x -d
  • cd packages/python/plotly
  • pip install -e .
  • pip install jupyter
  • Try it out in jupyter lab: jupyter lab
  • Try it out in jupyter notebook: jupyter notebook

@fcollonval

Copy link
Copy Markdown
Contributor

I wasn't able to find evidence that having an extension installed in jupyterlab >=3 or jupyter notebook >= 7 is even necessary for plotly

This is correct because the produced output is using html that will includes plotly.js the first time:

classNotebookRenderer(HtmlRenderer):

Dropping the mimerenderer factory will prevent plotly.json file to be opened in JupyterLab.

@marthacryan

Copy link
Copy Markdown
ContributorAuthor

@fcollonval Thank you for the response! Also hi!

@marthacryan
marthacryan marked this pull request as ready for review October 23, 2024 21:59
@gvwilsongvwilson added feature something new P1 needed for current cycle labels Oct 24, 2024
@archmoj

Copy link
Copy Markdown
Contributor

This is looking good to me.
@marthacryan Would you please add a changelog entry?

@LiamConnors

Copy link
Copy Markdown
Contributor

@marthacryan, testing the FigureWidget in Notebook 7 and I get a JavaScript error:

Code is

import plotly.graph_objects as go
f = go.FigureWidget()
f
image

I have anywidget=0.9.13

@marthacryan

Copy link
Copy Markdown
ContributorAuthor

@LiamConnors Looks like this wasn't happening for me because I hadn't added the npm install && npm run build step into pip install -e ., so the necessary javascript wasn't generated! I'll look into adding that

@LiamConnors

LiamConnors commented Oct 24, 2024

Copy link
Copy Markdown
Contributor

In VS Code, I see this:

image

Not really sure what to make of it. I'm using the same environment as in a notebook launched in the browser.

I've commented here as I'm testing off this branch, but I guess this may be more related to #4823

Comment threadREADME.md
Comment on lines +116 to +118
### Jupyter Widget Support

For use in the Jupyter Notebook, install the `notebook` and `ipywidgets`
For use as a Jupyter widget, install `jupyter` and `anywidget`

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The section above this talks about "JupyterLab Support" and should now mention anywidget. Wondering if this section should stay as "Jupyter Notebook Support"

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think maybe they should be combined. The usage is almost identical for jupyter Notebook and JupyterLab

@marthacryan
marthacryan merged commit ee67f2e into anywidgetNov 4, 2024
@marthacryan
marthacryan deleted the drop-notebook-6 branch November 4, 2024 16:03
elif "jupyter-lab" in parent_process and jupyter_lab.__version__ < "3":
# Add warning about upgrading jupyterlab
warnings.warn(
f"Plotly version >= 6 requires JupyterLab >= 3 but you have {jupyter_lab.__version__} installed. To upgrade JupyterLab, please run `pip install jupyterlab --upgrade`."

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe put this in FigureWidget instead?

bmwiedemann pushed a commit to bmwiedemann/openSUSE that referenced this pull request Jun 23, 2025
https://build.opensuse.org/request/show/1287194
by user bnavigator + anag_factory
- Drop upstream patch plotly-pr4622-np2.patch
- Remove jupyter sub-package, not part of the package anymore after
the switch to anywidget gh#plotly/plotly.py#4823
- Remove notebook from jupyter package, as part of jupyter notebook 6
drop, gh#plotly/plotly.py#4822
- Update to 6.1.2 (CVE-2025-5889, bsc#1244347)
* Fix type checking and code highlighting for graph_objects classes [#5199]
- Release 6.1.1
* Prevent swallowing of ValueError when creating a figure with
subplots [#3888]
* Fix issue causing fig.write_image() to not generate an image
[#5193]
- Release 6.1.0
## Updated
* Add support for Kaleido>=v1.0.0 for image generation [#5062, #5177]
* Reduce package bundle size by 18-24% via changes to code
generation [#4978]
## Fixed
* Fix third-party widget displa
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

featuresomething newP1needed for current cycle

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@marthacryan@fcollonval@archmoj@LiamConnors@gvwilson
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Drop notebook 6 - #4822

Merged
marthacryan merged 21 commits into
anywidgetfrom
drop-notebook-6
Nov 4, 2024
Merged

Drop notebook 6#4822
marthacryan merged 21 commits into
anywidgetfrom
drop-notebook-6

Conversation

@marthacryan

@marthacryanmarthacryan commented Oct 22, 2024

Copy link
Copy Markdown
Contributor

Note: this PR is on top of the changes from #4823 because the plotly.js version used in plotly.py is based on the jupyterlab extension code, and we needed a new place to store the plotly.js version. The widget seemed like a good place because all of the other javascript is removed in this PR.

Fixes#4779.

It appears that the entire packages/javascript/jupyterlab_plotly directory contains code that is either used to support very old versions of jupyter lab/notebook/voila, or is not used at all. This PR removes the entire directory in favor of having a very small packages/python/plotly/js directory that contains only the widget code (see #4663 for adding the widget code into that directory).

The last time that the jupyter extension was significantly changed was 3 years ago in #3142. @fcollonval described the files in the packages/javascript/jupyterlab_plotly directory in this comment. He did add support for federated extensions (new jupyter lab/notebook build), but I wasn't able to find evidence that having an extension installed in jupyterlab >=3 or jupyter notebook >= 7 is even necessary for plotly. @fcollonval if you know of any reason that that isn't true, please let me know!

To test:

  • Checkout branch
  • Create a new python env (conda, mamba, pipenv, etc)
  • git clean -f -x -d
  • cd packages/python/plotly
  • pip install -e .
  • pip install jupyter
  • Try it out in jupyter lab: jupyter lab
  • Try it out in jupyter notebook: jupyter notebook

@fcollonval

Copy link
Copy Markdown
Contributor

I wasn't able to find evidence that having an extension installed in jupyterlab >=3 or jupyter notebook >= 7 is even necessary for plotly

This is correct because the produced output is using html that will includes plotly.js the first time:

classNotebookRenderer(HtmlRenderer):

Dropping the mimerenderer factory will prevent plotly.json file to be opened in JupyterLab.

@marthacryan

Copy link
Copy Markdown
ContributorAuthor

@fcollonval Thank you for the response! Also hi!

@marthacryan
marthacryan marked this pull request as ready for review October 23, 2024 21:59
@gvwilsongvwilson added feature something new P1 needed for current cycle labels Oct 24, 2024
@archmoj

Copy link
Copy Markdown
Contributor

This is looking good to me.
@marthacryan Would you please add a changelog entry?

@LiamConnors

Copy link
Copy Markdown
Contributor

@marthacryan, testing the FigureWidget in Notebook 7 and I get a JavaScript error:

Code is

import plotly.graph_objects as go
f = go.FigureWidget()
f
image

I have anywidget=0.9.13

@marthacryan

Copy link
Copy Markdown
ContributorAuthor

@LiamConnors Looks like this wasn't happening for me because I hadn't added the npm install && npm run build step into pip install -e ., so the necessary javascript wasn't generated! I'll look into adding that

@LiamConnors

LiamConnors commented Oct 24, 2024

Copy link
Copy Markdown
Contributor

In VS Code, I see this:

image

Not really sure what to make of it. I'm using the same environment as in a notebook launched in the browser.

I've commented here as I'm testing off this branch, but I guess this may be more related to #4823

Comment threadREADME.md
Comment on lines +116 to +118
### Jupyter Widget Support

For use in the Jupyter Notebook, install the `notebook` and `ipywidgets`
For use as a Jupyter widget, install `jupyter` and `anywidget`

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The section above this talks about "JupyterLab Support" and should now mention anywidget. Wondering if this section should stay as "Jupyter Notebook Support"

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think maybe they should be combined. The usage is almost identical for jupyter Notebook and JupyterLab

@marthacryan
marthacryan merged commit ee67f2e into anywidgetNov 4, 2024
@marthacryan
marthacryan deleted the drop-notebook-6 branch November 4, 2024 16:03
elif "jupyter-lab" in parent_process and jupyter_lab.__version__ < "3":
# Add warning about upgrading jupyterlab
warnings.warn(
f"Plotly version >= 6 requires JupyterLab >= 3 but you have {jupyter_lab.__version__} installed. To upgrade JupyterLab, please run `pip install jupyterlab --upgrade`."

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe put this in FigureWidget instead?

bmwiedemann pushed a commit to bmwiedemann/openSUSE that referenced this pull request Jun 23, 2025
https://build.opensuse.org/request/show/1287194
by user bnavigator + anag_factory
- Drop upstream patch plotly-pr4622-np2.patch
- Remove jupyter sub-package, not part of the package anymore after
the switch to anywidget gh#plotly/plotly.py#4823
- Remove notebook from jupyter package, as part of jupyter notebook 6
drop, gh#plotly/plotly.py#4822
- Update to 6.1.2 (CVE-2025-5889, bsc#1244347)
* Fix type checking and code highlighting for graph_objects classes [#5199]
- Release 6.1.1
* Prevent swallowing of ValueError when creating a figure with
subplots [#3888]
* Fix issue causing fig.write_image() to not generate an image
[#5193]
- Release 6.1.0
## Updated
* Add support for Kaleido>=v1.0.0 for image generation [#5062, #5177]
* Reduce package bundle size by 18-24% via changes to code
generation [#4978]
## Fixed
* Fix third-party widget displa
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

featuresomething newP1needed for current cycle

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@marthacryan@fcollonval@archmoj@LiamConnors@gvwilson
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Drop notebook 6 - #4822

Merged
marthacryan merged 21 commits into
anywidgetfrom
drop-notebook-6
Nov 4, 2024
Merged

Drop notebook 6#4822
marthacryan merged 21 commits into
anywidgetfrom
drop-notebook-6

Conversation

@marthacryan

@marthacryanmarthacryan commented Oct 22, 2024

Copy link
Copy Markdown
Contributor

Note: this PR is on top of the changes from #4823 because the plotly.js version used in plotly.py is based on the jupyterlab extension code, and we needed a new place to store the plotly.js version. The widget seemed like a good place because all of the other javascript is removed in this PR.

Fixes#4779.

It appears that the entire packages/javascript/jupyterlab_plotly directory contains code that is either used to support very old versions of jupyter lab/notebook/voila, or is not used at all. This PR removes the entire directory in favor of having a very small packages/python/plotly/js directory that contains only the widget code (see #4663 for adding the widget code into that directory).

The last time that the jupyter extension was significantly changed was 3 years ago in #3142. @fcollonval described the files in the packages/javascript/jupyterlab_plotly directory in this comment. He did add support for federated extensions (new jupyter lab/notebook build), but I wasn't able to find evidence that having an extension installed in jupyterlab >=3 or jupyter notebook >= 7 is even necessary for plotly. @fcollonval if you know of any reason that that isn't true, please let me know!

To test:

  • Checkout branch
  • Create a new python env (conda, mamba, pipenv, etc)
  • git clean -f -x -d
  • cd packages/python/plotly
  • pip install -e .
  • pip install jupyter
  • Try it out in jupyter lab: jupyter lab
  • Try it out in jupyter notebook: jupyter notebook

@fcollonval

Copy link
Copy Markdown
Contributor

I wasn't able to find evidence that having an extension installed in jupyterlab >=3 or jupyter notebook >= 7 is even necessary for plotly

This is correct because the produced output is using html that will includes plotly.js the first time:

classNotebookRenderer(HtmlRenderer):

Dropping the mimerenderer factory will prevent plotly.json file to be opened in JupyterLab.

@marthacryan

Copy link
Copy Markdown
ContributorAuthor

@fcollonval Thank you for the response! Also hi!

@marthacryan
marthacryan marked this pull request as ready for review October 23, 2024 21:59
@gvwilsongvwilson added feature something new P1 needed for current cycle labels Oct 24, 2024
@archmoj

Copy link
Copy Markdown
Contributor

This is looking good to me.
@marthacryan Would you please add a changelog entry?

@LiamConnors

Copy link
Copy Markdown
Contributor

@marthacryan, testing the FigureWidget in Notebook 7 and I get a JavaScript error:

Code is

import plotly.graph_objects as go
f = go.FigureWidget()
f
image

I have anywidget=0.9.13

@marthacryan

Copy link
Copy Markdown
ContributorAuthor

@LiamConnors Looks like this wasn't happening for me because I hadn't added the npm install && npm run build step into pip install -e ., so the necessary javascript wasn't generated! I'll look into adding that

@LiamConnors

LiamConnors commented Oct 24, 2024

Copy link
Copy Markdown
Contributor

In VS Code, I see this:

image

Not really sure what to make of it. I'm using the same environment as in a notebook launched in the browser.

I've commented here as I'm testing off this branch, but I guess this may be more related to #4823

Comment threadREADME.md
Comment on lines +116 to +118
### Jupyter Widget Support

For use in the Jupyter Notebook, install the `notebook` and `ipywidgets`
For use as a Jupyter widget, install `jupyter` and `anywidget`

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The section above this talks about "JupyterLab Support" and should now mention anywidget. Wondering if this section should stay as "Jupyter Notebook Support"

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think maybe they should be combined. The usage is almost identical for jupyter Notebook and JupyterLab

@marthacryan
marthacryan merged commit ee67f2e into anywidgetNov 4, 2024
@marthacryan
marthacryan deleted the drop-notebook-6 branch November 4, 2024 16:03
elif "jupyter-lab" in parent_process and jupyter_lab.__version__ < "3":
# Add warning about upgrading jupyterlab
warnings.warn(
f"Plotly version >= 6 requires JupyterLab >= 3 but you have {jupyter_lab.__version__} installed. To upgrade JupyterLab, please run `pip install jupyterlab --upgrade`."

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe put this in FigureWidget instead?

bmwiedemann pushed a commit to bmwiedemann/openSUSE that referenced this pull request Jun 23, 2025
https://build.opensuse.org/request/show/1287194
by user bnavigator + anag_factory
- Drop upstream patch plotly-pr4622-np2.patch
- Remove jupyter sub-package, not part of the package anymore after
the switch to anywidget gh#plotly/plotly.py#4823
- Remove notebook from jupyter package, as part of jupyter notebook 6
drop, gh#plotly/plotly.py#4822
- Update to 6.1.2 (CVE-2025-5889, bsc#1244347)
* Fix type checking and code highlighting for graph_objects classes [#5199]
- Release 6.1.1
* Prevent swallowing of ValueError when creating a figure with
subplots [#3888]
* Fix issue causing fig.write_image() to not generate an image
[#5193]
- Release 6.1.0
## Updated
* Add support for Kaleido>=v1.0.0 for image generation [#5062, #5177]
* Reduce package bundle size by 18-24% via changes to code
generation [#4978]
## Fixed
* Fix third-party widget displa
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

featuresomething newP1needed for current cycle

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@marthacryan@fcollonval@archmoj@LiamConnors@gvwilson
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Drop notebook 6 - #4822

Merged
marthacryan merged 21 commits into
anywidgetfrom
drop-notebook-6
Nov 4, 2024
Merged

Drop notebook 6#4822
marthacryan merged 21 commits into
anywidgetfrom
drop-notebook-6

Conversation

@marthacryan

@marthacryanmarthacryan commented Oct 22, 2024

Copy link
Copy Markdown
Contributor

Note: this PR is on top of the changes from #4823 because the plotly.js version used in plotly.py is based on the jupyterlab extension code, and we needed a new place to store the plotly.js version. The widget seemed like a good place because all of the other javascript is removed in this PR.

Fixes#4779.

It appears that the entire packages/javascript/jupyterlab_plotly directory contains code that is either used to support very old versions of jupyter lab/notebook/voila, or is not used at all. This PR removes the entire directory in favor of having a very small packages/python/plotly/js directory that contains only the widget code (see #4663 for adding the widget code into that directory).

The last time that the jupyter extension was significantly changed was 3 years ago in #3142. @fcollonval described the files in the packages/javascript/jupyterlab_plotly directory in this comment. He did add support for federated extensions (new jupyter lab/notebook build), but I wasn't able to find evidence that having an extension installed in jupyterlab >=3 or jupyter notebook >= 7 is even necessary for plotly. @fcollonval if you know of any reason that that isn't true, please let me know!

To test:

  • Checkout branch
  • Create a new python env (conda, mamba, pipenv, etc)
  • git clean -f -x -d
  • cd packages/python/plotly
  • pip install -e .
  • pip install jupyter
  • Try it out in jupyter lab: jupyter lab
  • Try it out in jupyter notebook: jupyter notebook

@fcollonval

Copy link
Copy Markdown
Contributor

I wasn't able to find evidence that having an extension installed in jupyterlab >=3 or jupyter notebook >= 7 is even necessary for plotly

This is correct because the produced output is using html that will includes plotly.js the first time:

classNotebookRenderer(HtmlRenderer):

Dropping the mimerenderer factory will prevent plotly.json file to be opened in JupyterLab.

@marthacryan

Copy link
Copy Markdown
ContributorAuthor

@fcollonval Thank you for the response! Also hi!

@marthacryan
marthacryan marked this pull request as ready for review October 23, 2024 21:59
@gvwilsongvwilson added feature something new P1 needed for current cycle labels Oct 24, 2024
@archmoj

Copy link
Copy Markdown
Contributor

This is looking good to me.
@marthacryan Would you please add a changelog entry?

@LiamConnors

Copy link
Copy Markdown
Contributor

@marthacryan, testing the FigureWidget in Notebook 7 and I get a JavaScript error:

Code is

import plotly.graph_objects as go
f = go.FigureWidget()
f
image

I have anywidget=0.9.13

@marthacryan

Copy link
Copy Markdown
ContributorAuthor

@LiamConnors Looks like this wasn't happening for me because I hadn't added the npm install && npm run build step into pip install -e ., so the necessary javascript wasn't generated! I'll look into adding that

@LiamConnors

LiamConnors commented Oct 24, 2024

Copy link
Copy Markdown
Contributor

In VS Code, I see this:

image

Not really sure what to make of it. I'm using the same environment as in a notebook launched in the browser.

I've commented here as I'm testing off this branch, but I guess this may be more related to #4823

Comment threadREADME.md
Comment on lines +116 to +118
### Jupyter Widget Support

For use in the Jupyter Notebook, install the `notebook` and `ipywidgets`
For use as a Jupyter widget, install `jupyter` and `anywidget`

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The section above this talks about "JupyterLab Support" and should now mention anywidget. Wondering if this section should stay as "Jupyter Notebook Support"

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think maybe they should be combined. The usage is almost identical for jupyter Notebook and JupyterLab

@marthacryan
marthacryan merged commit ee67f2e into anywidgetNov 4, 2024
@marthacryan
marthacryan deleted the drop-notebook-6 branch November 4, 2024 16:03
elif "jupyter-lab" in parent_process and jupyter_lab.__version__ < "3":
# Add warning about upgrading jupyterlab
warnings.warn(
f"Plotly version >= 6 requires JupyterLab >= 3 but you have {jupyter_lab.__version__} installed. To upgrade JupyterLab, please run `pip install jupyterlab --upgrade`."

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe put this in FigureWidget instead?

bmwiedemann pushed a commit to bmwiedemann/openSUSE that referenced this pull request Jun 23, 2025
https://build.opensuse.org/request/show/1287194
by user bnavigator + anag_factory
- Drop upstream patch plotly-pr4622-np2.patch
- Remove jupyter sub-package, not part of the package anymore after
the switch to anywidget gh#plotly/plotly.py#4823
- Remove notebook from jupyter package, as part of jupyter notebook 6
drop, gh#plotly/plotly.py#4822
- Update to 6.1.2 (CVE-2025-5889, bsc#1244347)
* Fix type checking and code highlighting for graph_objects classes [#5199]
- Release 6.1.1
* Prevent swallowing of ValueError when creating a figure with
subplots [#3888]
* Fix issue causing fig.write_image() to not generate an image
[#5193]
- Release 6.1.0
## Updated
* Add support for Kaleido>=v1.0.0 for image generation [#5062, #5177]
* Reduce package bundle size by 18-24% via changes to code
generation [#4978]
## Fixed
* Fix third-party widget displa
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

featuresomething newP1needed for current cycle

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@marthacryan@fcollonval@archmoj@LiamConnors@gvwilson