mirror of https://github.com/explosion/spaCy.git
Don't check for Jupyter in global scope and fix check (#3213)
Resolves #3208. Prevent interactions with other libraries (pandas) that also access `get_ipython().config` and its parameters. See #3208 for details. I don't fully understand why this happens, but in spaCy, we can at least make sure we avoid calling into this method. <!--- Provide a general summary of your changes in the title. --> ## Description <!--- Use this section to describe your changes. If your changes required testing, include information about the testing environment and the tests you ran. If your test fixes a bug reported in an issue, don't forget to include the issue number. If your PR is still a work in progress, that's totally fine – just include a note to let us know. --> ### Types of change <!-- What type of change does your PR cover? Is it a bug fix, an enhancement or new feature, or a change to the documentation? --> ## Checklist <!--- Before you submit the PR, go over this checklist and make sure you can tick off all the boxes. [] -> [x] --> - [x] I have submitted the spaCy Contributor Agreement. - [x] I ran the tests, and all new and existing tests passed. - [x] My changes don't require a change to the documentation, or if they do, I've added all required information.
This commit is contained in:
parent
b34bc9d2e9
commit
e9a6dbe4f3
|
@ -9,10 +9,9 @@ from ..util import prints, is_in_jupyter
|
||||||
|
|
||||||
|
|
||||||
_html = {}
|
_html = {}
|
||||||
IS_JUPYTER = is_in_jupyter()
|
|
||||||
|
|
||||||
|
|
||||||
def render(docs, style='dep', page=False, minify=False, jupyter=IS_JUPYTER,
|
def render(docs, style='dep', page=False, minify=False, jupyter=False,
|
||||||
options={}, manual=False):
|
options={}, manual=False):
|
||||||
"""Render displaCy visualisation.
|
"""Render displaCy visualisation.
|
||||||
|
|
||||||
|
@ -39,7 +38,7 @@ def render(docs, style='dep', page=False, minify=False, jupyter=IS_JUPYTER,
|
||||||
parsed = [converter(doc, options) for doc in docs] if not manual else docs
|
parsed = [converter(doc, options) for doc in docs] if not manual else docs
|
||||||
_html['parsed'] = renderer.render(parsed, page=page, minify=minify).strip()
|
_html['parsed'] = renderer.render(parsed, page=page, minify=minify).strip()
|
||||||
html = _html['parsed']
|
html = _html['parsed']
|
||||||
if jupyter: # return HTML rendered by IPython display()
|
if jupyter or is_in_jupyter(): # return HTML rendered by IPython display()
|
||||||
from IPython.core.display import display, HTML
|
from IPython.core.display import display, HTML
|
||||||
return display(HTML(html))
|
return display(HTML(html))
|
||||||
return html
|
return html
|
||||||
|
|
|
@ -222,15 +222,15 @@ def get_package_path(name):
|
||||||
def is_in_jupyter():
|
def is_in_jupyter():
|
||||||
"""Check if user is running spaCy from a Jupyter notebook by detecting the
|
"""Check if user is running spaCy from a Jupyter notebook by detecting the
|
||||||
IPython kernel. Mainly used for the displaCy visualizer.
|
IPython kernel. Mainly used for the displaCy visualizer.
|
||||||
|
|
||||||
RETURNS (bool): True if in Jupyter, False if not.
|
RETURNS (bool): True if in Jupyter, False if not.
|
||||||
"""
|
"""
|
||||||
|
# https://stackoverflow.com/a/39662359/6400719
|
||||||
try:
|
try:
|
||||||
cfg = get_ipython().config
|
shell = get_ipython().__class__.__name__
|
||||||
if cfg['IPKernelApp']['parent_appname'] == 'ipython-notebook':
|
if shell == "ZMQInteractiveShell":
|
||||||
return True
|
return True # Jupyter notebook or qtconsole
|
||||||
except NameError:
|
except NameError:
|
||||||
return False
|
return False # Probably standard Python interpreter
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue