def test_python_magic3(): kernel = get_kernel() kernel.do_execute('%%python -e\n1 + 2', None) magic = kernel.get_magic('%%python') assert magic.retval is None kernel = get_kernel() kernel.do_execute('%%python\n1 + 2', None) magic = kernel.get_magic('%%python') assert magic.retval == 3 kernel = get_kernel() kernel.do_execute('%%python\n1 + 2\n2 + 3', None) magic = kernel.get_magic('%%python') assert magic.retval == 5 kernel = get_kernel() kernel.do_execute('%%python\nretval = 1 + 2\n2 + 3', None) magic = kernel.get_magic('%%python') assert magic.retval == 3 kernel = get_kernel() kernel.do_execute('%%python\nimport math', None) magic = kernel.get_magic('%%python') assert magic.retval == None
def test_python_magic3(): kernel = get_kernel() kernel.do_execute('%%python -e\n1 + 2', None) magic = kernel.get_magic('%%python') assert magic.retval is None kernel = get_kernel() kernel.do_execute('%%python\n1 + 2', None) magic = kernel.get_magic('%%python') assert magic.retval == 3
def test_edit_magic(): kernel = get_kernel(EvalKernel) results = kernel.do_execute("%%edit %s" % __file__) text = results["payload"][0]["text"] assert text.startswith('%%file') assert 'def test_edit_magic' in text
def test_help_magic(): kernel = get_kernel() kernel.do_execute('?%magic', None) text = get_log_text(kernel) assert '%magic - show installed magics' in text, repr(text) kernel.do_execute('%lsmagic??', None) text = get_log_text(kernel) assert 'class LSMagicMagic' in text kernel.do_execute('?', None) text = get_log_text(kernel) assert 'This is a usage statement.' in text kernel.do_execute('?%', None) text = get_log_text(kernel) assert 'This is a usage statement.' in text kernel.do_execute('?%whatwhat', None) text = get_log_text(kernel) assert "No such line magic 'whatwhat'" in text clear_log_text(kernel) kernel.do_execute('%%help %magic', None) text = get_log_text(kernel) assert 'MagicMagic' in text kernel.do_execute('%%help\n%python', None) text = get_log_text(kernel) assert 'PythonMagic' in text
def test_option(): kernel = get_kernel() d = Dummy(kernel) assert 'Options:' in d.line_dummy.__doc__ assert '--size' in d.line_dummy.__doc__ ret = d.call_magic('line', 'dummy', '', 'hey -s400,200') assert ret == d assert d.foo == 'hey', d.foo assert d.size == (400, 200) ret = d.call_magic('line', 'dummy', '', 'hey there') assert d.foo == 'hey there' ret = d.call_magic('line', 'dummy', '', 'range(1, 10)') assert d.foo == range(1, 10) ret = d.call_magic('line', 'dummy', '', '[1, 2, 3]') assert d.foo == [1, 2, 3] ret = d.call_magic('line', 'dummy', '', 'hey -l -s400,200') assert d.size == (400, 200) assert d.foo == "hey -l" ret = d.call_magic('line', 'dummy', '', 'hey -s -- -s400,200') assert d.size == (400, 200) assert d.foo == "hey -s"
def test_plot_magic_backend(): kernel = get_kernel() kernel.do_execute('%plot qt -f svg -s400,200', None) assert kernel.plot_settings['width'] == 400 assert kernel.plot_settings['height'] == 200 assert kernel.plot_settings['format'] == 'svg' assert kernel.plot_settings['backend'] == 'qt'
def test_cd_magic(): kernel = get_kernel() kernel.do_execute("%cd ~") assert os.getcwd() == os.path.expanduser('~'), os.getcwd() clear_log_text(kernel) kernel.do_execute('%cd') assert os.getcwd() in get_log_text(kernel)
def test_misc(): class TestKernel(MetaKernel): def do_execute_file(self, filename): self.Print("This language does not support running files") def do_function_direct(self, f, arg): self.Print("%s(%s)" % (f, self.repr(arg))) def repr(self, arg): return "XXX" kernel = get_kernel(TestKernel) assert kernel.do_execute_direct('garbage') is None kernel.do_execute_file('hello.txt') assert "This language does not support" in get_log_text(kernel) clear_log_text(kernel) kernel.do_function_direct('hello', 'world') text = get_log_text(kernel) assert "hello(XXX)" in text, text kernel.restart_kernel() ret = kernel.do_is_complete('hello\n') assert ret == {'status': 'complete'} assert kernel.do_inspect('hello', 10) is None
def test_plot_magic_all(): kernel = get_kernel() kernel.do_execute('%plot -b qt5 -f svg -s 400,200') assert kernel.plot_settings['width'] == 400 assert kernel.plot_settings['height'] == 200 assert kernel.plot_settings['format'] == 'svg', kernel.plot_settings assert kernel.plot_settings['backend'] == 'qt5', kernel.plot_settings
def test_multiplot(): kernel = get_kernel(GnuplotKernel) # multiplot code = """ set multiplot layout 2,1 plot sin(x) plot cos(x) unset multiplot """ kernel.do_execute(code) text = get_log_text(kernel) assert text.count('Display Data') == 1 # With output code = """ set terminal pncairo set output 'multiplot-sin-cos.png' set multiplot layout 2, 1 plot sin(x) plot cos(x) unset multiplot unset output """ kernel.do_execute(code) assert os.path.exists('multiplot-sin-cos.png') remove_files('multiplot-sin-cos.png')
def test_cell_magic(): # To simulate '%load_ext gnuplot_kernel'; # create a main kernel, a gnuplot kernel and # a gnuplot magic that uses the gnuplot kernel. # Then manually register the gnuplot magic into # the main kernel. kernel = get_kernel() gkernel = GnuplotKernel() gmagic = GnuplotMagic(gkernel) gkernel.makeSubkernelTo(kernel, kernel.Display) kernel.line_magics['gnuplot'] = gmagic kernel.cell_magics['gnuplot'] = gmagic # inline output code = """%%gnuplot plot cos(x) """ kernel.do_execute(code) assert_true('Display Data' in get_log_text(kernel)) clear_log_text(kernel) # file output kernel.call_magic('%gnuplot pngcairo size 560,420') code = """%%gnuplot set output 'cosine.png' plot cos(x) """ kernel.do_execute(code) assert_true(os.path.exists('cosine.png')) clear_log_text(kernel)
def test_inline_plots(): kernel = get_kernel(GnuplotKernel) kernel.call_magic('%gnuplot inline') # inline plot creates data code = """ plot sin(x) """ kernel.do_execute(code) text = get_log_text(kernel) assert_true('Display Data' in text) clear_log_text(kernel) # multiple plot statements data code = """ plot sin(x) plot cos(x) """ kernel.do_execute(code) text = get_log_text(kernel) assert_true(text.count('Display Data') == 2) clear_log_text(kernel) # svg kernel.call_magic('%gnuplot inline svg') code = """ plot tan(x) """ kernel.do_execute(code) text = get_log_text(kernel) assert_true('Display Data' in text) clear_log_text(kernel)
def test_inline_plots(): kernel = get_kernel(GnuplotKernel) kernel.call_magic('%gnuplot inline') # inline plot creates data code = """ plot sin(x) """ kernel.do_execute(code) text = get_log_text(kernel) assert 'Display Data' in text clear_log_text(kernel) # multiple plot statements data code = """ plot sin(x) plot cos(x) """ kernel.do_execute(code) text = get_log_text(kernel) assert text.count('Display Data') == 2 clear_log_text(kernel) # svg kernel.call_magic('%gnuplot inline svg') code = """ plot tan(x) """ kernel.do_execute(code) text = get_log_text(kernel) assert 'Display Data' in text clear_log_text(kernel)
def test_inspect(): kernel = get_kernel() kernel.do_inspect('%lsmagic', len('%lsmagic')) log_text = get_log_text(kernel) assert "list the current line and cell magics" in log_text kernel.do_inspect('%lsmagic ', len('%lsmagic') + 1)
def test_reload_magics_magic(): kernel = get_kernel() kernel.do_execute("%reload_magics") text = get_log_text(kernel) for item in "%cd %connect_info %download %edit %help %html %install_magic %javascript %kernel %kx %latex %load %lsmagic %magic %parallel %plot %pmap %px %python %reload_magics %restart %run %shell %spell %%debug %%file %%help %%html %%javascript %%kx %%latex %%processing %%px %%python %%shell %%show %%spell %%time".split(): assert item in text, ("load_magic didn't list '%s'" % item)
def test_history(): kernel = get_kernel() kernel.do_execute('!ls', False) kernel.do_execute('%cd ~', False) kernel.do_shutdown(False) with open(kernel.hist_file, 'rb') as fid: text = fid.read().decode('utf-8', 'replace') assert '!ls' in text assert '%cd' in text kernel = get_kernel() kernel.do_history(None, None, None) assert '!ls' in ''.join(kernel.hist_cache) assert '%cd ~'
def test_file_plots(): kernel = get_kernel(GnuplotKernel) kernel.call_magic('%gnuplot pngcairo size 560, 420') # With a non-inline terminal plot gets created code = """ set output 'sine.png' plot sin(x) """ kernel.do_execute(code) assert os.path.exists('sine.png') clear_log_text(kernel) # Multiple line statement code = """ set output 'sine-cosine.png' plot sin(x),\ cos(x) """ kernel.do_execute(code) assert os.path.exists('sine-cosine.png') # Multiple line statement code = """ set output 'tan.png' plot tan(x) set output 'tan2.png' replot """ kernel.do_execute(code) assert os.path.exists('tan.png') assert os.path.exists('tan2.png') remove_files('sine.png', 'sine-cosine.png') remove_files('tan.png', 'tan2.png')
def test_cell_magic(): # To simulate '%load_ext gnuplot_kernel'; # create a main kernel, a gnuplot kernel and # a gnuplot magic that uses the gnuplot kernel. # Then manually register the gnuplot magic into # the main kernel. kernel = get_kernel() gkernel = GnuplotKernel() gmagic = GnuplotMagic(gkernel) gkernel.makeSubkernel(kernel) kernel.line_magics['gnuplot'] = gmagic kernel.cell_magics['gnuplot'] = gmagic # inline output code = """%%gnuplot plot cos(x) """ kernel.do_execute(code) assert 'Display Data' in get_log_text(kernel) clear_log_text(kernel) # file output kernel.call_magic('%gnuplot pngcairo size 560,420') code = """%%gnuplot set output 'cosine.png' plot cos(x) """ kernel.do_execute(code) assert os.path.exists('cosine.png') clear_log_text(kernel) remove_files('cosine.png')
def test_option(): kernel = get_kernel() d = Dummy(kernel) assert 'Options:' in d.line_dummy.__doc__ assert '--size' in d.line_dummy.__doc__ ret = d.call_magic('line', 'dummy', '', 'hey -s400,200') assert ret == d assert d.foo == 'hey', d.foo assert d.size == (400, 200) ret = d.call_magic('line', 'dummy', '', 'hey there') assert d.foo == 'hey there' ret = d.call_magic('line', 'dummy', '', 'range(1, 10)') # arg eval no longer evals Python raw code: assert d.foo == "range(1, 10)" ret = d.call_magic('line', 'dummy', '', '[1, 2, 3]') # arg eval does eval Python data structures: assert d.foo == [1, 2, 3] ret = d.call_magic('line', 'dummy', '', 'hey -l -s400,200') assert d.size == (400, 200) assert d.foo == "hey -l" ret = d.call_magic('line', 'dummy', '', 'hey -s -- -s400,200') assert d.size == (400, 200) assert d.foo == "hey -s"
def test_include_magic(): global EXECUTION kernel = get_kernel() def do_execute_direct(code): global EXECUTION EXECUTION = code kernel.do_execute_direct = do_execute_direct FILE = __file__ if FILE.endswith(".pyc"): FILE = FILE[:-1] kernel.do_execute("%%include %s" % FILE) assert "metakernel" in EXECUTION assert ("AND " + "THIS") not in EXECUTION EXECUTION = "" kernel.do_execute(("%%include %s\nAND" + " THIS") % FILE) assert "metakernel" in EXECUTION assert ("AND " + "THIS") in EXECUTION EXECUTION = "" kernel.do_execute("%%include '%s' '%s'" % (FILE, FILE)) assert "metakernel" in EXECUTION assert ("AND " + "THIS") not in EXECUTION
def test_reload_magics_magic(): kernel = get_kernel() kernel.do_execute("%reload_magics") text = get_log_text(kernel) for item in "%cd %connect_info %download %edit %help %html %install_magic %javascript %kernel %kx %latex %load %lsmagic %magic %parallel %plot %pmap %px %python %reload_magics %restart %run %shell %macro %%debug %%file %%help %%html %%javascript %%kx %%latex %%processing %%px %%python %%shell %%show %%macro %%time".split(): assert item in text, ("load_magic didn't list '%s'" % item)
def test_html_magic(): kernel = get_kernel(EvalKernel) kernel.do_execute("""%%html <b>bold</b> """) text = get_log_text(kernel) assert "Display Data" in text, text
def test_plot_magic_format(): kernel = get_kernel() kernel.do_execute('%plot qt -f svg -w 500 -h 400 -r 200') assert kernel.plot_settings['backend'] == 'qt', kernel.plot_settings assert kernel.plot_settings['format'] == 'svg', kernel.plot_settings assert kernel.plot_settings['width'] == 500, kernel.plot_settings assert kernel.plot_settings['height'] == 400, kernel.plot_settings assert kernel.plot_settings['resolution'] == 200, kernel.plot_settings
def test_javascript_magic(): kernel = get_kernel(EvalKernel) kernel.do_execute("""%%javascript console.log("Hello from Javascript"); """) text = get_log_text(kernel) assert "Display Data" in text, text
def test_time_magic(): kernel = get_kernel(EvalKernel) kernel.do_execute("""%%time x = 1 """) text = get_log_text(kernel) assert re.match(".*Time: .* seconds.", text, re.MULTILINE | re.DOTALL) != None, text
def test_parallel_magic(): kernel = get_kernel(EvalKernel) # start up an EvalKernel on each node: kernel.do_execute("%parallel metakernel_python MetaKernelPython", False) # Now, execute something on each one: kernel.do_execute("%px cluster_rank", False) results = get_log_text(kernel) assert "[0, 1, 2]" in results, results
def test_gnuplot_error_message(): kernel = get_kernel(GnuplotKernel) # The error messages gets to the kernel code = 'plot [1,2][] sin(x)' kernel.do_execute(code) text = get_log_text(kernel) assert_true(' ^' in text)
def test_inline_magic(): kernel = get_kernel(GnuplotKernel) # gnuplot line magic changes the plot settings kernel.call_magic('%gnuplot pngcairo size 560, 420') assert kernel.plot_settings['backend'] == 'pngcairo' assert kernel.plot_settings['format'] == 'png' assert kernel.plot_settings['termspec'] == 'pngcairo size 560, 420'
def test_bad_prompt(): kernel = get_kernel(GnuplotKernel) # Anything other than 'gnuplot> ' # is a bad prompt code = 'set multiplot' kernel.do_execute(code) text = get_log_text(kernel) assert_true('warning' in text.lower())
def test_bad_prompt(): kernel = get_kernel(GnuplotKernel) # Anything other than 'gnuplot> ' # is a bad prompt code = 'set multiplot' kernel.do_execute(code) text = get_log_text(kernel) assert 'warning' in text.lower()
def test_gnuplot_error_message(): kernel = get_kernel(GnuplotKernel) # The error messages gets to the kernel code = 'plot [1,2][] sin(x)' kernel.do_execute(code) text = get_log_text(kernel) assert ' ^' in text
def test_badinput(): kernel = get_kernel(GnuplotKernel) # No code that endswith a backslash code = 'plot sin(x),\\' kernel.do_execute(code) text = get_log_text(kernel) assert 'backslash' in text
def test_badinput(): kernel = get_kernel(GnuplotKernel) # No code that endswith a backslash code = 'plot sin(x),\\' kernel.do_execute(code) text = get_log_text(kernel) assert_true('backslash' in text)
def test_get_magics(): kernel = get_kernel() d = Dummy(kernel) line = d.get_magics('line') cell = d.get_magics('cell') assert 'dummy' in line assert 'spam' in cell assert 'eggs' in line
def test_set_get_range_magic(): kernel = get_kernel(EvalKernel) kernel.do_execute("%set variable range(2)") kernel.do_execute("%get variable") text = get_log_text(kernel) if PY3: assert "range(0, 2)" in text, text else: assert "[0, 1]" in text, text
def test_restart_magic(): kernel = get_kernel(EvalKernel) kernel.do_execute('a=1') kernel.do_execute("%restart") kernel.do_execute('a') text = get_log_text(kernel) assert 'NameError' in text
def test_install_magic_magic(): kernel = get_kernel(EvalKernel) kernel.do_execute( "%install_magic https://raw.githubusercontent.com/calysto/metakernel/master/metakernel/magics/cd_magic.py" ) text = get_log_text(kernel) assert re.match(".*Downloaded '.*ipython/metakernel/magics/cd_magic.py'", text, re.DOTALL | re.M), "Not downloaded" assert os.path.isfile(filename), ("File not found: %s" % filename)
def test_python_magic(): kernel = get_kernel() text = '%python imp' comp = kernel.do_complete(text, len(text)) assert 'import' in comp['matches'] helpstr = kernel.get_help_on('%python bin') assert 'Return the binary representation of an integer' in helpstr, helpstr
def test_time_magic(): kernel = get_kernel(EvalKernel) kernel.do_execute( """%%time x = 1 """ ) text = get_log_text(kernel) assert re.match(".*Time: .* seconds.", text, re.MULTILINE | re.DOTALL) != None, text
def test_shell_magic2(): kernel = get_kernel() kernel.do_execute('!cat "%s"' % __file__, False) log_text = get_log_text(kernel) assert "metakernel.py" in log_text kernel.do_execute('!!\necho "hello"\necho "goodbye"', None) log_text = get_log_text(kernel) assert '"hello"' in log_text assert '"goodbye"' in log_text
def test_python_magic(): kernel = get_kernel() text = '%python imp' comp = kernel.do_complete(text, len(text)) assert 'import' in comp['matches'] helpstr = kernel.get_help_on('%python bin') assert 'bin(number)' in helpstr
def test_python_magic2(): kernel = get_kernel() kernel.do_execute('%python retval = 1', None) assert '1' in get_log_text(kernel) kernel.do_execute('''%%python def test(a): return a + 1 retval = test(2)''', None) assert '3' in get_log_text(kernel)
def test_inline_magic(): kernel = get_kernel(GnuplotKernel) # gnuplot line magic changes the plot settings kernel.call_magic('%gnuplot pngcairo size 560, 420') assert_equal(kernel.plot_settings['backend'], 'pngcairo') assert_equal(kernel.plot_settings['format'], 'png') assert_equal(kernel.plot_settings['termspec'], 'pngcairo size 560, 420')