##// END OF EJS Templates
Refuse to install event loop hooks when not using `prompt_toolkit` (#14132)...
Refuse to install event loop hooks when not using `prompt_toolkit` (#14132) Without this, `%gui` is effectively a no-op but the user thinks it works. For example. If running `ipython`: ``` In [1]: import matplotlib; matplotlib.use('QtAgg'); from matplotlib import pyplot; pyplot.ion(); pyplot.plot([1, 2, 3, 4]) Installed qt6 event loop hook. Out[1]: [<matplotlib.lines.Line2D at 0x1ba2f59d2a0>] ``` The window appears and responds as expected. If running `ipython --simple-prompt`, the user would see the same output, when in fact no event loop hook was installed since it's not supported without `prompt_toolkit`. The resulting Qt window is unresponsive because the event loop is not running, i.e. with `--simple-prompt`, Qt windows should block (but `pyplot` doesn't/can't know to do that) With this PR, the user will see: ``` In [1]: import matplotlib; matplotlib.use('QtAgg'); from matplotlib import pyplot; pyplot.ion(); pyplot.plot([1, 2, 3, 4]) Cannot install event loop hook for "qt" when running with `--simple-prompt`. NOTE: Tk is supported natively; use Tk apps and Tk backends with `--simple-prompt`. Out[1]: [<matplotlib.lines.Line2D at 0x170be0c0310>] ``` They'll still get an unresponsive Qt window, but they'll at least be told this can't work (while anything using Tk will work just fine).

File last commit:

r26919:77e81773
r28368:22fc5ab5 merge
Show More
test_importstring.py
40 lines | 1.2 KiB | text/x-python | PythonLexer
/ IPython / utils / tests / test_importstring.py
Fernando Perez
Add proper tests to importstring.
r11017 """Tests for IPython.utils.importstring."""
#-----------------------------------------------------------------------------
# Copyright (C) 2013 The IPython Development Team
#
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING, distributed as part of this software.
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------
Samuel Gaist
[utils][tests][importstring] Remove nose
r26919 import pytest
Fernando Perez
Add proper tests to importstring.
r11017
from IPython.utils.importstring import import_item
#-----------------------------------------------------------------------------
# Tests
#-----------------------------------------------------------------------------
def test_import_plain():
"Test simple imports"
import os
Samuel Gaist
[utils][tests][importstring] Remove nose
r26919
os2 = import_item("os")
assert os is os2
Fernando Perez
Add proper tests to importstring.
r11017
def test_import_nested():
"Test nested imports from the stdlib"
from os import path
Samuel Gaist
[utils][tests][importstring] Remove nose
r26919
path2 = import_item("os.path")
assert path is path2
Fernando Perez
Add proper tests to importstring.
r11017
def test_import_raises():
"Test that failing imports raise the right exception"
Samuel Gaist
[utils][tests][importstring] Remove nose
r26919 pytest.raises(ImportError, import_item, "IPython.foobar")