Skip to content

If IPython is merely installed, don't assume that it's actually used #5222

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
If IPython is merely installed, don't assume that it's actually used
In my virtual environment, there happens to be installed IPython package.
It wasn't installed by myself, it's merely a transitive dependency of
some another package. It's neither intended to be used, nor is actually
used by my project. However, mere presense of the IPython package, due
to the over-simplistic decision code in this module (io._renderers)
leads to drastic behavior change in Plotly.py: calling
Figure._repr_html_() causes lots of JS garbage to be printed on terminal
(by common sense, this should be a side-effects free function, only
returning a value). On a higher level, this breaks natural Plotly.py
integration in frameworks like Shiny.py (because again, instead of
HTML representation being returned for a framework to process, parts
of that representation are dumped on terminal).

The real underlying issue is that Plotly.py should not force-import
any "optional" packages behind users' back. However, this is a deeper
issue requiring consideration and will be reported separately. This
patch is a quick solution for the problem describe above.

From interactive session:

>>> import IPython
>>> IPython.get_ipython().__class__.__name__
'NoneType'

Signed-off-by: Paul Sokolovsky <pfalcon@users.sourceforge.net>
  • Loading branch information
pfalcon committed Jun 7, 2025
commit cb2c84cf8b04df14d0e37905f794adc07c449224
5 changes: 3 additions & 2 deletions plotly/io/_renderers.py
Original file line number Diff line number Diff line change
Expand Up @@ -542,10 +542,11 @@ def show(fig, renderer=None, validate=True, **kwargs):
# orca not found
pass

# Check if we're running in ipython terminal
# Check if we're running in ipython terminal. Or, if we aren't
# running ipython at all.
ipython_info = ipython.get_ipython()
shell = ipython_info.__class__.__name__
if not default_renderer and (shell == "TerminalInteractiveShell"):
if not default_renderer and (shell in ("TerminalInteractiveShell", "NoneType")):
default_renderer = "browser"

# Check if we're running in a Jupyter notebook or JupyterLab
Expand Down
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy