From 7366f52cbe50b88d8d282b994ccda35159d75bc0 2012-08-21 18:18:09
From: Takafumi Arakaki <aka.tkf@gmail.com>
Date: 2012-08-21 18:18:09
Subject: [PATCH] Encode to byte before base64.decodestring

---

diff --git a/IPython/frontend/terminal/console/interactiveshell.py b/IPython/frontend/terminal/console/interactiveshell.py
index a7f3798..04bf7dd 100644
--- a/IPython/frontend/terminal/console/interactiveshell.py
+++ b/IPython/frontend/terminal/console/interactiveshell.py
@@ -265,12 +265,12 @@ class ZMQTerminalInteractiveShell(TerminalInteractiveShell):
         if mime not in ('image/png', 'image/jpeg'):
             return
         import PIL
-        raw = base64.decodestring(data[mime])
+        raw = base64.decodestring(data[mime].encode('ascii'))
         img = PIL.Image.open(BytesIO(raw))
         img.show()
 
     def handle_image_stream(self, data, mime):
-        raw = base64.decodestring(data[mime])
+        raw = base64.decodestring(data[mime].encode('ascii'))
         imageformat = self._imagemime[mime]
         fmt = dict(format=imageformat)
         args = [s.format(**fmt) for s in self.stream_image_handler]
@@ -281,7 +281,7 @@ class ZMQTerminalInteractiveShell(TerminalInteractiveShell):
             proc.communicate(raw)
 
     def handle_image_tempfile(self, data, mime):
-        raw = base64.decodestring(data[mime])
+        raw = base64.decodestring(data[mime].encode('ascii'))
         imageformat = self._imagemime[mime]
         filename = 'tmp.{0}'.format(imageformat)
         with nested(NamedFileInTemporaryDirectory(filename),
diff --git a/IPython/frontend/terminal/console/tests/test_image_handler.py b/IPython/frontend/terminal/console/tests/test_image_handler.py
index e00aafe..1dfe9db 100644
--- a/IPython/frontend/terminal/console/tests/test_image_handler.py
+++ b/IPython/frontend/terminal/console/tests/test_image_handler.py
@@ -30,7 +30,7 @@ class ZMQTerminalInteractiveShellTestCase(unittest.TestCase):
         self.shell = ZMQTerminalInteractiveShell(kernel_manager=km)
         self.raw = b'dummy data'
         self.mime = 'image/png'
-        self.data = {self.mime: base64.encodestring(self.raw)}
+        self.data = {self.mime: base64.encodestring(self.raw).decode('ascii')}
 
     def test_no_call_by_default(self):
         def raise_if_called(*args, **kwds):