コード例 #1
0
def test_video_embedding():
    """use a tempfile, with dummy-data, to ensure that video embedding doesn't crash"""
    v = display.Video("http://ignored")
    assert not v.embed
    html = v._repr_html_()
    nt.assert_not_in('src="data:', html)
    nt.assert_in('src="http://ignored"', html)

    with nt.assert_raises(ValueError):
        v = display.Video(b'abc')

    with NamedFileInTemporaryDirectory('test.mp4') as f:
        f.write(b'abc')
        f.close()

        v = display.Video(f.name)
        assert not v.embed
        html = v._repr_html_()
        nt.assert_not_in('src="data:', html)

        v = display.Video(f.name, embed=True)
        html = v._repr_html_()
        nt.assert_in('src="data:video/mp4;base64,YWJj"', html)

        v = display.Video(f.name, embed=True, mimetype='video/other')
        html = v._repr_html_()
        nt.assert_in('src="data:video/other;base64,YWJj"', html)

        v = display.Video(b'abc', embed=True, mimetype='video/mp4')
        html = v._repr_html_()
        nt.assert_in('src="data:video/mp4;base64,YWJj"', html)

        v = display.Video(u'YWJj', embed=True, mimetype='video/xyz')
        html = v._repr_html_()
        nt.assert_in('src="data:video/xyz;base64,YWJj"', html)
コード例 #2
0
ファイル: test_embed.py プロジェクト: Mu-L/ipython
def test_ipython_embed():
    """test that `IPython.embed()` works"""
    with NamedFileInTemporaryDirectory('file_with_embed.py') as f:
        f.write(_sample_embed)
        f.flush()
        f.close()  # otherwise msft won't be able to read the file

        # run `python file_with_embed.py`
        cmd = [sys.executable, f.name]
        env = os.environ.copy()
        env['IPY_TEST_SIMPLE_PROMPT'] = '1'

        p = subprocess.Popen(cmd,
                             env=env,
                             stdin=subprocess.PIPE,
                             stdout=subprocess.PIPE,
                             stderr=subprocess.PIPE)
        out, err = p.communicate(_exit)
        std = out.decode('UTF-8')

        assert p.returncode == 0
        assert "3 . 14" in std
        if os.name != "nt":
            # TODO: Fix up our different stdout references, see issue gh-14
            assert "IPython" in std
        assert "bye!" in std
コード例 #3
0
ファイル: test_tempdir.py プロジェクト: fariasjr/CitiTuirer
def test_named_file_in_temporary_directory():
    with NamedFileInTemporaryDirectory('filename') as file:
        name = file.name
        assert not file.closed
        assert os.path.exists(name)
        file.write(b'test')
    assert file.closed
    assert not os.path.exists(name)
コード例 #4
0
ファイル: interactiveshell.py プロジェクト: venuktan/ipython
 def handle_image_tempfile(self, data, mime):
     raw = base64.decodestring(data[mime].encode('ascii'))
     imageformat = self._imagemime[mime]
     filename = 'tmp.{0}'.format(imageformat)
     with NamedFileInTemporaryDirectory(filename) as f, \
                 open(os.devnull, 'w') as devnull:
         f.write(raw)
         f.flush()
         fmt = dict(file=f.name, format=imageformat)
         args = [s.format(**fmt) for s in self.tempfile_image_handler]
         subprocess.call(args, stdout=devnull, stderr=devnull)
コード例 #5
0
ファイル: test_embed.py プロジェクト: monker490/WordVec
def test_ipython_embed():
    """test that `IPython.embed()` works"""
    with NamedFileInTemporaryDirectory('file_with_embed.py') as f:
        f.write(_sample_embed)
        f.flush()
        f.close()  # otherwise msft won't be able to read the file

        # run `python file_with_embed.py`
        cmd = [sys.executable, f.name]

        out, p = process_handler(cmd, lambda p: (p.communicate(_exit), p))
        std = out[0].decode('UTF-8')
        nt.assert_equal(p.returncode, 0)
        nt.assert_in('3 . 14', std)
        if os.name != 'nt':
            # TODO: Fix up our different stdout references, see issue gh-14
            nt.assert_in('IPython', std)
        nt.assert_in('bye!', std)
コード例 #6
0
ファイル: test_embed.py プロジェクト: iurisegtovich/ipydex
    def test_ipython_embed1(self):
        with NamedFileInTemporaryDirectory('file_with_embed.py') as f:
            f.write(_sample_embed_ips1)
            f.flush()
            f.close()  # otherwise msft won't be able to read the file

            # run `python file_with_embed.py`
            cmd = [sys.executable, f.name]
            env = os.environ.copy()
            env['IPY_TEST_SIMPLE_PROMPT'] = '1'

            p = subprocess.Popen(cmd, env=env, stdin=subprocess.PIPE,
                                 stdout=subprocess.PIPE, stderr=subprocess.PIPE)
            out, err = p.communicate(_exit)
            std = out.decode('UTF-8')

            self.assertEqual(p.returncode, 0)
            self.assertIn('3 . 14', std)
            self.assertIn('IPython', std)
            self.assertIn('bye!', std)
コード例 #7
0
ファイル: test_embed.py プロジェクト: iurisegtovich/ipydex
    def test_ipython_embed2(self):
        with NamedFileInTemporaryDirectory('file_with_embed.py') as f:
            f.write(_sample_embed_ips2)
            f.flush()
            f.close()  # otherwise msft won't be able to read the file

            fname = f.name

            # run `python file_with_embed.py`
            cmd1 = [sys.executable, fname, "1.0"]
            env = os.environ.copy()
            env['IPY_TEST_SIMPLE_PROMPT'] = '1'

            p = subprocess.Popen(cmd1, env=env, stdin=subprocess.PIPE,
                                 stdout=subprocess.PIPE, stderr=subprocess.PIPE)

            # expected output (including control chars for colors etc)
            # noinspection PyPep8
            eout1 = b"\n\x1b[1;32m/tmp/tmpdir/filename.py\x1b[0m in \x1b[0;36m<module>\x1b[1;34m\x1b[0m\n\x1b[1;32m---> 37\x1b[1;33m \x1b[0mf3\x1b[0m\x1b[1;33m(\x1b[0m\x1b[0marg\x1b[0m\x1b[1;33m)\x1b[0m\x1b[1;33m\x1b[0m\x1b[0m\n\x1b[0m\n\x1b[1;32m/tmp/tmpdir/filename.py\x1b[0m in \x1b[0;36mf3\x1b[1;34m(x)\x1b[0m\n\x1b[1;32m---> 31\x1b[1;33m     \x1b[0mf2\x1b[0m\x1b[1;33m(\x1b[0m\x1b[0mx\x1b[0m\x1b[1;33m)\x1b[0m\x1b[1;33m\x1b[0m\x1b[0m\n\x1b[0m\n\x1b[1;32m/tmp/tmpdir/filename.py\x1b[0m in \x1b[0;36mf2\x1b[1;34m(x)\x1b[0m\n\x1b[1;32m---> 23\x1b[1;33m     \x1b[0mf1\x1b[0m\x1b[1;33m(\x1b[0m\x1b[0mx\x1b[0m\x1b[1;33m+\x1b[0m\x1b[1;36m1\x1b[0m\x1b[1;33m)\x1b[0m\x1b[1;33m\x1b[0m\x1b[0m\n\x1b[0m\n\x1b[1;32m/tmp/tmpdir/filename.py\x1b[0m in \x1b[0;36mf1\x1b[1;34m(x)\x1b[0m\n\x1b[1;32m---> 18\x1b[1;33m         \x1b[0mf2\x1b[0m\x1b[1;33m(\x1b[0m\x1b[0mx\x1b[0m\x1b[1;33m)\x1b[0m\x1b[1;33m\x1b[0m\x1b[0m\n\x1b[0m\n\x1b[1;32m/tmp/tmpdir/filename.py\x1b[0m in \x1b[0;36mf2\x1b[1;34m(x)\x1b[0m\n\x1b[1;32m---> 23\x1b[1;33m     \x1b[0mf1\x1b[0m\x1b[1;33m(\x1b[0m\x1b[0mx\x1b[0m\x1b[1;33m+\x1b[0m\x1b[1;36m1\x1b[0m\x1b[1;33m)\x1b[0m\x1b[1;33m\x1b[0m\x1b[0m\n\x1b[0m\n\x1b[1;32m/tmp/tmpdir/filename.py\x1b[0m in \x1b[0;36mf1\x1b[1;34m(x)\x1b[0m\n\x1b[1;32m---> 18\x1b[1;33m         \x1b[0mf2\x1b[0m\x1b[1;33m(\x1b[0m\x1b[0mx\x1b[0m\x1b[1;33m)\x1b[0m\x1b[1;33m\x1b[0m\x1b[0m\n\x1b[0m\n\x1b[1;32m/tmp/tmpdir/filename.py\x1b[0m in \x1b[0;36mf2\x1b[1;34m(x)\x1b[0m\n\x1b[1;32m---> 23\x1b[1;33m     \x1b[0mf1\x1b[0m\x1b[1;33m(\x1b[0m\x1b[0mx\x1b[0m\x1b[1;33m+\x1b[0m\x1b[1;36m1\x1b[0m\x1b[1;33m)\x1b[0m\x1b[1;33m\x1b[0m\x1b[0m\n\x1b[0m\n\x1b[1;32m/tmp/tmpdir/filename.py\x1b[0m in \x1b[0;36mf1\x1b[1;34m(x)\x1b[0m\n\x1b[1;32m---> 18\x1b[1;33m         \x1b[0mf2\x1b[0m\x1b[1;33m(\x1b[0m\x1b[0mx\x1b[0m\x1b[1;33m)\x1b[0m\x1b[1;33m\x1b[0m\x1b[0m\n\x1b[0m\n\x1b[1;32m/tmp/tmpdir/filename.py\x1b[0m in \x1b[0;36mf2\x1b[1;34m(x)\x1b[0m\n\x1b[1;32m---> 23\x1b[1;33m     \x1b[0mf1\x1b[0m\x1b[1;33m(\x1b[0m\x1b[0mx\x1b[0m\x1b[1;33m+\x1b[0m\x1b[1;36m1\x1b[0m\x1b[1;33m)\x1b[0m\x1b[1;33m\x1b[0m\x1b[0m\n\x1b[0m\n\x1b[1;32m/tmp/tmpdir/filename.py\x1b[0m in \x1b[0;36mf1\x1b[1;34m(x)\x1b[0m\n\x1b[0;32m     13\x1b[0m         \x1b[1;36m1\x1b[0m\x1b[1;33m/\x1b[0m\x1b[1;36m0\x1b[0m\x1b[1;33m\x1b[0m\x1b[0m\n\x1b[0;32m     14\x1b[0m     \x1b[1;32melif\x1b[0m \x1b[0mx\x1b[0m \x1b[1;33m>\x1b[0m \x1b[1;36m4\x1b[0m\x1b[1;33m:\x1b[0m\x1b[1;33m\x1b[0m\x1b[0m\n\x1b[0;32m     15\x1b[0m         \x1b[1;31m# call interactive IPython\x1b[0m\x1b[1;33m\x1b[0m\x1b[1;33m\x1b[0m\x1b[0m\n\x1b[1;32m---> 16\x1b[1;33m         \x1b[0mIPS\x1b[0m\x1b[1;33m(\x1b[0m\x1b[1;33m)\x1b[0m\x1b[1;33m\x1b[0m\x1b[0m\n\x1b[0m\x1b[0;32m     17\x1b[0m     \x1b[1;32melse\x1b[0m\x1b[1;33m:\x1b[0m\x1b[1;33m\x1b[0m\x1b[0m\n\x1b[0;32m     18\x1b[0m         \x1b[0mf2\x1b[0m\x1b[1;33m(\x1b[0m\x1b[0mx\x1b[0m\x1b[1;33m)\x1b[0m\x1b[1;33m\x1b[0m\x1b[0m\n\x1b[0;32m     19\x1b[0m \x1b[1;33m\x1b[0m\x1b[0m"

            out, err = p.communicate(_exit)

            out_adapted = perform_replacements(out, fname)

            # hotfix for some compatibility problem !!
            self.assertIn(eout1[:140], out_adapted)

            cmd2 = [sys.executable, fname, "1.5"]

            p = pexpect.spawn(sys.executable, [fname, "1.5"], env=env)

            p.expect(ipy_prompt)
            out_a = get_adapted_out(p, fname)

            # this is good to get an overview over calling history
            # print(out_a.decode())

            # here an ZeroDivision error is intentionally raised and provokes an IPython shell to start
            # we test, whether this shell displays all expected informations and behaves as we want

            eout = b'x= 2.5\r\nx= 3.5\r\n\r\n\r\n\x1b[1;31m---------------------------------------------------------------------------\x1b[0m\r\n\x1b[1;31mZeroDivisionError\x1b[0m                         Traceback (most recent call last)\r\n\x1b[1;32m/tmp/tmpdir/filename.py\x1b[0m in \x1b[0;36m<module>\x1b[1;34m\x1b[0m\r\n\x1b[0;32m     35\x1b[0m \x1b[1;31m# arg == 1.0 -> IPS\x1b[0m\x1b[1;33m\x1b[0m\x1b[1;33m\x1b[0m\x1b[0m\r\n\x1b[0;32m     36\x1b[0m \x1b[1;33m\x1b[0m\x1b[0m\r\n\x1b[1;32m---> 37\x1b[1;33m \x1b[0mf3\x1b[0m\x1b[1;33m(\x1b[0m\x1b[0marg\x1b[0m\x1b[1;33m)\x1b[0m\x1b[1;33m\x1b[0m\x1b[0m\r\n\x1b[0m\x1b[0;32m     38\x1b[0m \x1b[1;33m\x1b[0m\x1b[0m\r\n\r\n\x1b[1;32m/tmp/tmpdir/filename.py\x1b[0m in \x1b[0;36mf3\x1b[1;34m(x)\x1b[0m\r\n\x1b[0;32m     29\x1b[0m     \x1b[0mb\x1b[0m \x1b[1;33m=\x1b[0m \x1b[1;33m[\x1b[0m\x1b[1;36m1\x1b[0m\x1b[1;33m,\x1b[0m \x1b[1;36m3\x1b[0m\x1b[1;33m]\x1b[0m\x1b[1;33m\x1b[0m\x1b[0m\r\n\x1b[0;32m     30\x1b[0m \x1b[1;33m\x1b[0m\x1b[0m\r\n\x1b[1;32m---> 31\x1b[1;33m     \x1b[0mf2\x1b[0m\x1b[1;33m(\x1b[0m\x1b[0mx\x1b[0m\x1b[1;33m)\x1b[0m\x1b[1;33m\x1b[0m\x1b[0m\r\n\x1b[0m\x1b[0;32m     32\x1b[0m \x1b[1;33m\x1b[0m\x1b[0m\r\n\x1b[0;32m     33\x1b[0m \x1b[0marg\x1b[0m \x1b[1;33m=\x1b[0m \x1b[0mfloat\x1b[0m\x1b[1;33m(\x1b[0m\x1b[0msys\x1b[0m\x1b[1;33m.\x1b[0m\x1b[0margv\x1b[0m\x1b[1;33m[\x1b[0m\x1b[1;36m1\x1b[0m\x1b[1;33m]\x1b[0m\x1b[1;33m)\x1b[0m\x1b[1;33m\x1b[0m\x1b[0m\r\n\r\n\x1b[1;32m/tmp/tmpdir/filename.py\x1b[0m in \x1b[0;36mf2\x1b[1;34m(x)\x1b[0m\r\n\x1b[0;32m     21\x1b[0m \x1b[1;32mdef\x1b[0m \x1b[0mf2\x1b[0m\x1b[1;33m(\x1b[0m\x1b[0mx\x1b[0m\x1b[1;33m)\x1b[0m\x1b[1;33m:\x1b[0m\x1b[1;33m\x1b[0m\x1b[0m\r\n\x1b[0;32m     22\x1b[0m     \x1b[0mname\x1b[0m \x1b[1;33m=\x1b[0m \x1b[1;34m"f2"\x1b[0m\x1b[1;33m\x1b[0m\x1b[0m\r\n\x1b[1;32m---> 23\x1b[1;33m     \x1b[0mf1\x1b[0m\x1b[1;33m(\x1b[0m\x1b[0mx\x1b[0m\x1b[1;33m+\x1b[0m\x1b[1;36m1\x1b[0m\x1b[1;33m)\x1b[0m\x1b[1;33m\x1b[0m\x1b[0m\r\n\x1b[0m\x1b[0;32m     24\x1b[0m \x1b[1;33m\x1b[0m\x1b[0m\r\n\x1b[0;32m     25\x1b[0m \x1b[1;33m\x1b[0m\x1b[0m\r\n\r\n\x1b[1;32m/tmp/tmpdir/filename.py\x1b[0m in \x1b[0;36mf1\x1b[1;34m(x)\x1b[0m\r\n\x1b[0;32m     16\x1b[0m         \x1b[0mIPS\x1b[0m\x1b[1;33m(\x1b[0m\x1b[1;33m)\x1b[0m\x1b[1;33m\x1b[0m\x1b[0m\r\n\x1b[0;32m     17\x1b[0m     \x1b[1;32melse\x1b[0m\x1b[1;33m:\x1b[0m\x1b[1;33m\x1b[0m\x1b[0m\r\n\x1b[1;32m---> 18\x1b[1;33m         \x1b[0mf2\x1b[0m\x1b[1;33m(\x1b[0m\x1b[0mx\x1b[0m\x1b[1;33m)\x1b[0m\x1b[1;33m\x1b[0m\x1b[0m\r\n\x1b[0m\x1b[0;32m     19\x1b[0m \x1b[1;33m\x1b[0m\x1b[0m\r\n\x1b[0;32m     20\x1b[0m \x1b[1;33m\x1b[0m\x1b[0m\r\n\r\n\x1b[1;32m/tmp/tmpdir/filename.py\x1b[0m in \x1b[0;36mf2\x1b[1;34m(x)\x1b[0m\r\n\x1b[0;32m     21\x1b[0m \x1b[1;32mdef\x1b[0m \x1b[0mf2\x1b[0m\x1b[1;33m(\x1b[0m\x1b[0mx\x1b[0m\x1b[1;33m)\x1b[0m\x1b[1;33m:\x1b[0m\x1b[1;33m\x1b[0m\x1b[0m\r\n\x1b[0;32m     22\x1b[0m     \x1b[0mname\x1b[0m \x1b[1;33m=\x1b[0m \x1b[1;34m"f2"\x1b[0m\x1b[1;33m\x1b[0m\x1b[0m\r\n\x1b[1;32m---> 23\x1b[1;33m     \x1b[0mf1\x1b[0m\x1b[1;33m(\x1b[0m\x1b[0mx\x1b[0m\x1b[1;33m+\x1b[0m\x1b[1;36m1\x1b[0m\x1b[1;33m)\x1b[0m\x1b[1;33m\x1b[0m\x1b[0m\r\n\x1b[0m\x1b[0;32m     24\x1b[0m \x1b[1;33m\x1b[0m\x1b[0m\r\n\x1b[0;32m     25\x1b[0m \x1b[1;33m\x1b[0m\x1b[0m\r\n\r\n\x1b[1;32m/tmp/tmpdir/filename.py\x1b[0m in \x1b[0;36mf1\x1b[1;34m(x)\x1b[0m\r\n\x1b[0;32m     11\x1b[0m     \x1b[1;32mif\x1b[0m \x1b[0mx\x1b[0m \x1b[1;33m==\x1b[0m \x1b[1;36m3.5\x1b[0m\x1b[1;33m:\x1b[0m\x1b[1;33m\x1b[0m\x1b[0m\r\n\x1b[0;32m     12\x1b[0m         \x1b[1;31m# provoke an exception\x1b[0m\x1b[1;33m\x1b[0m\x1b[1;33m\x1b[0m\x1b[0m\r\n\x1b[1;32m---> 13\x1b[1;33m         \x1b[1;36m1\x1b[0m\x1b[1;33m/\x1b[0m\x1b[1;36m0\x1b[0m\x1b[1;33m\x1b[0m\x1b[0m\r\n\x1b[0m\x1b[0;32m     14\x1b[0m     \x1b[1;32melif\x1b[0m \x1b[0mx\x1b[0m \x1b[1;33m>\x1b[0m \x1b[1;36m4\x1b[0m\x1b[1;33m:\x1b[0m\x1b[1;33m\x1b[0m\x1b[0m\r\n\x1b[0;32m     15\x1b[0m         \x1b[1;31m# call interactive IPython\x1b[0m\x1b[1;33m\x1b[0m\x1b[1;33m\x1b[0m\x1b[0m\r\n\r\n\x1b[1;31mZeroDivisionError\x1b[0m: division by zero\r\n'

            # hotfix for some compatibility problem !!
            self.assertIn(eout[:330], out_a)

            out_a = ipy_io(p, fname, "print('func =', name)\n")
            self.assertIn(b"func = f1", out_a)

            out_a = ipy_io(p, fname, "print('x =', x)\n")
            self.assertIn(b"x = 3.5", out_a)

            # test to perform some variable definitions

            ipy_io(p, fname, "y = 23.1\n")
            out_a = ipy_io(p, fname, "print('y =', y)\n")
            self.assertIn(b"y = 23.1", out_a)

            ipy_io(p, fname, "y = -25.1\n")
            out_a = ipy_io(p, fname, "print('y =', y)\n")
            self.assertIn(b"y = -25.1", out_a)

            # move one frame up
            ipy_io(p, fname, "__mu = 1\n")
            out_a = ipy_io(p, fname, "exit()\n")

            out_a = ipy_io(p, fname, "print('func =', name)\n")
            self.assertIn(b"func = f2", out_a)

            out_a = ipy_io(p, fname, "print('x =', x)\n")
            self.assertIn(b"x = 2.5", out_a)

            # move one frame up -> again to f1
            ipy_io(p, fname, "__mu = 1\n")
            out_a = ipy_io(p, fname, "exit()\n")

            out_a = ipy_io(p, fname, "print('func =', name)\n")
            self.assertIn(b"func = f1", out_a)

            ipy_io(p, fname, "z = 789\n")

            # move two frames up
            ipy_io(p, fname, "__mu = 2\n")
            out_a = ipy_io(p, fname, "exit()\n")

            out_a = ipy_io(p, fname, "print('func =', name)\n")
            self.assertIn(b"func = f3", out_a)

            # test of local variable in namespace of f3
            out_a = ipy_io(p, fname, "print('b:', b == [1, 3])\n")
            self.assertIn(b"b: True", out_a)

            # move two frames down -> f1 with x = 2.5
            ipy_io(p, fname, "__mu = -2\n")
            out_a = ipy_io(p, fname, "exit()\n")
            out_a = ipy_io(p, fname, "print('func =', name)\n")
            self.assertIn(b"func = f1", out_a)
            out_a = ipy_io(p, fname, "print('x =', x)\n")
            self.assertIn(b"x = 2.5", out_a)

            # check that this is the namespace which we had already visited above
            out_a = ipy_io(p, fname, "print('z =', z)\n")
            self.assertIn(b"z = 789", out_a)