packages feed

ipython-kernel 0.11.0.0 → 0.12.0.0

raw patch · 4 files changed

+38/−12 lines, 4 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ IHaskell.IPython.Types: isIOPubMessageType :: MessageType -> Bool
- IHaskell.IPython.EasyKernel: KernelConfig :: LanguageInfo -> (FilePath -> IO KernelSpec) -> (output -> [DisplayData]) -> (result -> [DisplayData]) -> (Text -> Int -> m (Text, [Text])) -> (Text -> Int -> m (Maybe [DisplayData])) -> (Text -> IO () -> (output -> IO ()) -> m (result, ExecuteReplyStatus, String)) -> Bool -> String -> String -> String -> String -> KernelConfig m output result
+ IHaskell.IPython.EasyKernel: KernelConfig :: LanguageInfo -> (FilePath -> IO KernelSpec) -> (output -> [DisplayData]) -> (result -> [DisplayData]) -> (Text -> Int -> m (Text, [Text])) -> (Text -> Int -> m (Maybe [DisplayData])) -> (Text -> IO () -> (output -> IO ()) -> m (result, ExecuteReplyStatus, String)) -> Bool -> String -> String -> String -> String -> KernelConfig (m :: Type -> Type) output result
- IHaskell.IPython.EasyKernel: [completion] :: KernelConfig m output result -> Text -> Int -> m (Text, [Text])
+ IHaskell.IPython.EasyKernel: [completion] :: KernelConfig (m :: Type -> Type) output result -> Text -> Int -> m (Text, [Text])
- IHaskell.IPython.EasyKernel: [debug] :: KernelConfig m output result -> Bool
+ IHaskell.IPython.EasyKernel: [debug] :: KernelConfig (m :: Type -> Type) output result -> Bool
- IHaskell.IPython.EasyKernel: [displayOutput] :: KernelConfig m output result -> output -> [DisplayData]
+ IHaskell.IPython.EasyKernel: [displayOutput] :: KernelConfig (m :: Type -> Type) output result -> output -> [DisplayData]
- IHaskell.IPython.EasyKernel: [displayResult] :: KernelConfig m output result -> result -> [DisplayData]
+ IHaskell.IPython.EasyKernel: [displayResult] :: KernelConfig (m :: Type -> Type) output result -> result -> [DisplayData]
- IHaskell.IPython.EasyKernel: [inspectInfo] :: KernelConfig m output result -> Text -> Int -> m (Maybe [DisplayData])
+ IHaskell.IPython.EasyKernel: [inspectInfo] :: KernelConfig (m :: Type -> Type) output result -> Text -> Int -> m (Maybe [DisplayData])
- IHaskell.IPython.EasyKernel: [kernelBanner] :: KernelConfig m output result -> String
+ IHaskell.IPython.EasyKernel: [kernelBanner] :: KernelConfig (m :: Type -> Type) output result -> String
- IHaskell.IPython.EasyKernel: [kernelImplName] :: KernelConfig m output result -> String
+ IHaskell.IPython.EasyKernel: [kernelImplName] :: KernelConfig (m :: Type -> Type) output result -> String
- IHaskell.IPython.EasyKernel: [kernelImplVersion] :: KernelConfig m output result -> String
+ IHaskell.IPython.EasyKernel: [kernelImplVersion] :: KernelConfig (m :: Type -> Type) output result -> String
- IHaskell.IPython.EasyKernel: [kernelLanguageInfo] :: KernelConfig m output result -> LanguageInfo
+ IHaskell.IPython.EasyKernel: [kernelLanguageInfo] :: KernelConfig (m :: Type -> Type) output result -> LanguageInfo
- IHaskell.IPython.EasyKernel: [kernelProtocolVersion] :: KernelConfig m output result -> String
+ IHaskell.IPython.EasyKernel: [kernelProtocolVersion] :: KernelConfig (m :: Type -> Type) output result -> String
- IHaskell.IPython.EasyKernel: [run] :: KernelConfig m output result -> Text -> IO () -> (output -> IO ()) -> m (result, ExecuteReplyStatus, String)
+ IHaskell.IPython.EasyKernel: [run] :: KernelConfig (m :: Type -> Type) output result -> Text -> IO () -> (output -> IO ()) -> m (result, ExecuteReplyStatus, String)
- IHaskell.IPython.EasyKernel: [writeKernelspec] :: KernelConfig m output result -> FilePath -> IO KernelSpec
+ IHaskell.IPython.EasyKernel: [writeKernelspec] :: KernelConfig (m :: Type -> Type) output result -> FilePath -> IO KernelSpec
- IHaskell.IPython.EasyKernel: data KernelConfig m output result
+ IHaskell.IPython.EasyKernel: data KernelConfig (m :: Type -> Type) output result
- IHaskell.IPython.ZeroMQ: Channels :: Chan Message -> Chan Message -> Chan Message -> Chan Message -> Chan Message -> ByteString -> ZeroMQInterface
+ IHaskell.IPython.ZeroMQ: Channels :: Chan (Chan Message, Message) -> Chan Message -> Chan (Chan Message, Message) -> Chan Message -> Chan Message -> ByteString -> ZeroMQInterface
- IHaskell.IPython.ZeroMQ: [controlRequestChannel] :: ZeroMQInterface -> Chan Message
+ IHaskell.IPython.ZeroMQ: [controlRequestChannel] :: ZeroMQInterface -> Chan (Chan Message, Message)
- IHaskell.IPython.ZeroMQ: [shellRequestChannel] :: ZeroMQInterface -> Chan Message
+ IHaskell.IPython.ZeroMQ: [shellRequestChannel] :: ZeroMQInterface -> Chan (Chan Message, Message)

Files

ipython-kernel.cabal view
@@ -1,5 +1,5 @@ name:                ipython-kernel-version:             0.11.0.0+version:             0.12.0.0 synopsis:            A library for creating kernels for IPython frontends  description:         ipython-kernel is a library for communicating with frontends for the interactive IPython framework. It is used extensively in IHaskell, the interactive Haskell environment.
src/IHaskell/IPython/EasyKernel.hs view
@@ -37,6 +37,7 @@ import qualified Data.Map as Map import           Data.Maybe (fromMaybe) import qualified Data.Text as T+import qualified Data.Text.Encoding as Text  import           IHaskell.IPython.Kernel import           IHaskell.IPython.Message.UUID as UUID@@ -150,11 +151,11 @@   zmq <- liftIO $ serveProfile prof False   execCount <- liftIO $ newMVar 0   forever $ do-    req <- liftIO $ readChan (shellRequestChannel zmq)+    (repChan, req) <- liftIO $ readChan (shellRequestChannel zmq)     repHeader <- createReplyHeader (header req)     when (debug config) . liftIO $ print req     reply <- replyTo config execCount zmq req repHeader-    liftIO $ writeChan (shellReplyChannel zmq) reply+    liftIO $ writeChan repChan reply  replyTo :: MonadIO m         => KernelConfig m output result@@ -256,7 +257,11 @@   return msg  dupHeader :: MonadIO m => MessageHeader -> MessageType -> m MessageHeader-dupHeader hdr mtype =-  do-    uuid <- liftIO UUID.random-    return hdr { mhMessageId = uuid, mhMsgType = mtype }+dupHeader hdr messageType = do+  uuid <- liftIO UUID.random+  let sessionBytes = Text.encodeUtf8 $ T.pack $ UUID.uuidToString $ mhSessionId hdr+      -- For IOPub message types, use session ID as identifier (topic)+      newIdentifiers = if isIOPubMessageType messageType+                       then [sessionBytes]+                       else mhIdentifiers hdr+  return hdr { mhMessageId = uuid, mhMsgType = messageType, mhIdentifiers = newIdentifiers }
src/IHaskell/IPython/Types.hs view
@@ -30,6 +30,7 @@     Metadata(..),     replyType,     showMessageType,+    isIOPubMessageType,      -- ** IPython display data message     DisplayData(..),@@ -244,6 +245,20 @@ showMessageType CommCloseMessage = "comm_close" showMessageType HistoryRequestMessage = "history_request" showMessageType HistoryReplyMessage = "history_reply"++isIOPubMessageType :: MessageType -> Bool+isIOPubMessageType StatusMessage = True+isIOPubMessageType ExecuteResultMessage = True+isIOPubMessageType StreamMessage = True+isIOPubMessageType DisplayDataMessage = True+isIOPubMessageType UpdateDisplayDataMessage = True+isIOPubMessageType ExecuteInputMessage = True+isIOPubMessageType ExecuteErrorMessage = True+isIOPubMessageType ClearOutputMessage = True+isIOPubMessageType CommOpenMessage = True+isIOPubMessageType CommDataMessage = True+isIOPubMessageType CommCloseMessage = True+isIOPubMessageType _ = False  instance FromJSON MessageType where   parseJSON (String s) =
src/IHaskell/IPython/ZeroMQ.hs view
@@ -42,12 +42,16 @@        Channels          {          -- | A channel populated with requests from the frontend.-         shellRequestChannel :: Chan Message+         -- Shared between the shell and control channels.+         -- The channel content is a tuple (replyChannel, message):+         --   * If the message comes from the shell channel, 'replyChannel' is the shell reply channel.+         --   * If the message comes from the control channel, 'replyChannel' is the control reply channel.+         shellRequestChannel :: Chan (Chan Message, Message)          -- | Writing to this channel causes a reply to be sent to the frontend.          , shellReplyChannel :: Chan Message          -- | This channel is a duplicate of the shell request channel, though using a different backend          -- socket.-         , controlRequestChannel :: Chan Message+         , controlRequestChannel :: Chan (Chan Message, Message)          -- | This channel is a duplicate of the shell reply channel, though using a different backend          -- socket.          , controlReplyChannel :: Chan Message@@ -69,7 +73,7 @@   shellReqChan <- newChan   shellRepChan <- newChan   controlReqChan <- dupChan shellReqChan-  controlRepChan <- dupChan shellRepChan+  controlRepChan <- newChan   iopubChan <- newChan   return $! Channels     { shellRequestChannel = shellReqChan@@ -215,7 +219,8 @@ shell :: Bool -> ZeroMQInterface -> Socket Router -> IO () shell debug channels sock = do   -- Receive a message and write it to the interface channel.-  receiveMessage debug sock >>= writeChan requestChannel+  message <- receiveMessage debug sock+  writeChan requestChannel (replyChannel, message)    -- Read the reply from the interface channel and send it.   readChan replyChannel >>= sendMessage debug (hmacKey channels) sock@@ -230,7 +235,8 @@ control :: Bool -> ZeroMQInterface -> Socket Router -> IO () control debug channels sock = do   -- Receive a message and write it to the interface channel.-  receiveMessage debug sock >>= writeChan requestChannel+  message <- receiveMessage debug sock+  writeChan requestChannel (replyChannel, message)    -- Read the reply from the interface channel and send it.   readChan replyChannel >>= sendMessage debug (hmacKey channels) sock