Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
gargantext-ihaskell
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
gargantext
gargantext-ihaskell
Commits
f5319a2c
Commit
f5319a2c
authored
Mar 09, 2014
by
Andrew Gibiansky
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Switching to aeson >= 0.6 && < 0.8, as per @aavgt's PR
parent
c2437394
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
41 additions
and
36 deletions
+41
-36
ipython-kernel.cabal
ipython-kernel/ipython-kernel.cabal
+1
-1
Parser.hs
ipython-kernel/src/IPython/Message/Parser.hs
+8
-8
Writer.hs
ipython-kernel/src/IPython/Message/Writer.hs
+5
-3
Types.hs
ipython-kernel/src/IPython/Types.hs
+27
-24
No files found.
ipython-kernel/ipython-kernel.cabal
View file @
f5319a2c
...
...
@@ -27,7 +27,7 @@ library
hs-source-dirs: src
default-language: Haskell2010
build-depends: base >=4.6 && <4.7,
aeson >=0.
7
,
aeson >=0.
6 && <0.8
,
bytestring >=0.10,
cereal >=0.3,
containers >=0.5,
...
...
ipython-kernel/src/IPython/Message/Parser.hs
View file @
f5319a2c
...
...
@@ -11,9 +11,9 @@ import Control.Applicative ((<|>))
import
Data.Aeson.Types
(
parse
)
import
Data.ByteString
import
Data.Map
(
Map
)
import
qualified
Data.ByteString.Lazy
as
Lazy
import
qualified
Data.ByteString.Char8
as
Char
import
qualified
Data.
Map
as
Map
import
Data.Text
(
Text
)
import
qualified
Data.
ByteString.Lazy
as
Lazy
import
IPython.Types
...
...
@@ -45,10 +45,10 @@ parseHeader :: [ByteString] -- ^ The list of identifiers.
parseHeader
idents
headerData
parentHeader
metadata
=
MessageHeader
{
identifiers
=
idents
,
parentHeader
=
parentResult
,
metadata
=
Map
.
map
Char
.
pack
$
Map
.
mapKeys
Char
.
pack
metadataMap
,
metadata
=
metadataMap
,
messageId
=
messageUUID
,
sessionId
=
sessionUUID
,
username
=
Char
.
pack
username
,
username
=
username
,
msgType
=
messageType
}
where
-- Decode the header data and the parent header data into JSON objects.
...
...
@@ -67,7 +67,7 @@ parseHeader idents headerData parentHeader metadata = MessageHeader {
return
(
messType
,
username
,
message
,
session
)
-- Get metadata as a simple map.
Just
metadataMap
=
decode
$
Lazy
.
fromStrict
metadata
::
Maybe
(
Map
String
String
)
Just
metadataMap
=
decode
$
Lazy
.
fromStrict
metadata
::
Maybe
(
Map
Text
Text
)
noHeader
::
MessageHeader
noHeader
=
error
"No header created"
...
...
@@ -108,7 +108,7 @@ executeRequestParser content =
Success
(
code
,
silent
,
storeHistory
,
allowStdin
)
=
parse
parser
decoded
in
ExecuteRequest
{
header
=
noHeader
,
getCode
=
Char
.
pack
code
,
getCode
=
code
,
getSilent
=
silent
,
getAllowStdin
=
allowStdin
,
getStoreHistory
=
storeHistory
,
...
...
@@ -123,7 +123,7 @@ completeRequestParser content = parsed
code
<-
obj
.:
"block"
<|>
return
""
codeLine
<-
obj
.:
"line"
pos
<-
obj
.:
"cursor_pos"
return
$
CompleteRequest
noHeader
(
Char
.
pack
code
)
(
Char
.
pack
codeLine
)
pos
return
$
CompleteRequest
noHeader
code
codeLine
pos
Just
decoded
=
decode
content
...
...
ipython-kernel/src/IPython/Message/Writer.hs
View file @
f5319a2c
...
...
@@ -11,8 +11,9 @@ import Data.Map (Map)
import
Data.Text
(
Text
,
pack
)
import
Data.Monoid
(
mempty
)
import
qualified
Data.ByteString.Char8
as
Char
import
qualified
Data.ByteString.Lazy
as
L
import
qualified
Data.ByteString
as
B
import
Data.Text.Encoding
import
IPython.Types
...
...
@@ -103,7 +104,8 @@ instance ToJSON StreamType where
-- | Convert a MIME type and value into a JSON dictionary pair.
displayDataToJson
::
DisplayData
->
(
Text
,
Value
)
displayDataToJson
(
DisplayData
mimeType
dataStr
)
=
pack
(
show
mimeType
)
.=
Char
.
unpack
dataStr
displayDataToJson
(
DisplayData
mimeType
dataStr
)
=
pack
(
show
mimeType
)
.=
String
dataStr
----- Constants -----
...
...
ipython-kernel/src/IPython/Types.hs
View file @
f5319a2c
...
...
@@ -30,8 +30,9 @@ module IPython.Types (
import
Data.Aeson
import
Control.Applicative
((
<$>
),
(
<*>
))
import
Data.ByteString
(
ByteString
)
import
qualified
Data.ByteString.Char8
as
Char
import
qualified
Data.Text
as
Text
import
qualified
Data.Text.Encoding
as
Text
import
Data.Text
(
Text
)
import
Data.Serialize
import
IPython.Message.UUID
import
GHC.Generics
(
Generic
)
...
...
@@ -60,7 +61,7 @@ data Profile = Profile {
hbPort
::
Port
,
-- ^ The heartbeat channel port.
shellPort
::
Port
,
-- ^ The shell command port.
iopubPort
::
Port
,
-- ^ The IOPub port.
key
::
ByteString
-- ^ The HMAC encryption key.
key
::
Text
-- ^ The HMAC encryption key.
}
deriving
(
Show
,
Read
)
-- Convert the kernel profile to and from JSON.
...
...
@@ -73,7 +74,7 @@ instance FromJSON Profile where
<*>
v
.:
"hb_port"
<*>
v
.:
"shell_port"
<*>
v
.:
"iopub_port"
<*>
(
Char
.
pack
<$>
v
.:
"key"
)
<*>
v
.:
"key"
parseJSON
_
=
fail
"Expecting JSON object."
instance
ToJSON
Profile
where
...
...
@@ -85,15 +86,14 @@ instance ToJSON Profile where
"hb_port"
.=
hbPort
profile
,
"shell_port"
.=
shellPort
profile
,
"iopub_port"
.=
iopubPort
profile
,
"key"
.=
Char
.
unpack
(
key
profile
)
"key"
.=
key
profile
]
instance
FromJSON
Transport
where
parseJSON
(
String
str
)
=
do
let
mech
=
Text
.
unpack
str
parseJSON
(
String
mech
)
=
do
case
mech
of
"tcp"
->
return
TCP
_
->
fail
$
"Unknown transport mechanism "
++
mech
_
->
fail
$
"Unknown transport mechanism "
++
Text
.
unpack
mech
parseJSON
_
=
fail
"Expected JSON string as transport."
instance
ToJSON
Transport
where
...
...
@@ -119,15 +119,15 @@ instance ToJSON MessageHeader where
toJSON
header
=
object
[
"msg_id"
.=
messageId
header
,
"session"
.=
sessionId
header
,
"username"
.=
Char
.
unpack
(
username
header
)
,
"username"
.=
username
header
,
"msg_type"
.=
showMessageType
(
msgType
header
)
]
-- | A username for the source of a message.
type
Username
=
ByteString
type
Username
=
Text
-- | A metadata dictionary.
type
Metadata
=
Map
ByteString
ByteString
type
Metadata
=
Map
Text
Text
-- | The type of a message, corresponding to IPython message types.
data
MessageType
=
KernelInfoReplyMessage
...
...
@@ -209,13 +209,13 @@ data Message
-- | A request from a frontend to execute some code.
|
ExecuteRequest
{
header
::
MessageHeader
,
getCode
::
ByteString
,
-- ^ The code string.
getCode
::
Text
,
-- ^ The code string.
getSilent
::
Bool
,
-- ^ Whether this should be silently executed.
getStoreHistory
::
Bool
,
-- ^ Whether to store this in history.
getAllowStdin
::
Bool
,
-- ^ Whether this code can use stdin.
getUserVariables
::
[
ByteString
],
-- ^ Unused.
getUserExpressions
::
[
ByteString
]
-- ^ Unused.
getUserVariables
::
[
Text
],
-- ^ Unused.
getUserExpressions
::
[
Text
]
-- ^ Unused.
}
-- | A reply to an execute request.
...
...
@@ -257,27 +257,27 @@ data Message
|
CompleteRequest
{
header
::
MessageHeader
,
getCode
::
ByteString
,
{- ^
getCode
::
Text
,
{- ^
The entire block of text where the line is. This may be useful in the
case of multiline completions where more context may be needed. Note: if
in practice this field proves unnecessary, remove it to lighten the
messages. json field @block@ -}
getCodeLine
::
ByteString
,
-- ^ just the line with the cursor. json field @line@
getCodeLine
::
Text
,
-- ^ just the line with the cursor. json field @line@
getCursorPos
::
Int
-- ^ position of the cursor (index into the line?). json field @cursor_pos@
}
|
CompleteReply
{
header
::
MessageHeader
,
completionMatches
::
[
String
],
completionMatchedText
::
String
,
completionText
::
String
,
completionMatches
::
[
Text
],
completionMatchedText
::
Text
,
completionText
::
Text
,
completionStatus
::
Bool
}
|
ObjectInfoRequest
{
header
::
MessageHeader
,
objectName
::
String
,
-- ^ Name of object being searched for.
objectName
::
Text
,
-- ^ Name of object being searched for.
detailLevel
::
Int
-- ^ Level of detail desired (defaults to 0).
-- 0 is equivalent to foo?, 1 is equivalent
-- to foo??.
...
...
@@ -285,10 +285,10 @@ data Message
|
ObjectInfoReply
{
header
::
MessageHeader
,
objectName
::
String
,
-- ^ Name of object which was searched for.
objectName
::
Text
,
-- ^ Name of object which was searched for.
objectFound
::
Bool
,
-- ^ Whether the object was found.
objectTypeString
::
String
,
-- ^ Object type.
objectDocString
::
String
objectTypeString
::
Text
,
-- ^ Object type.
objectDocString
::
Text
}
|
ShutdownRequest
{
...
...
@@ -341,7 +341,7 @@ replyType ShutdownRequestMessage = Just ShutdownReplyMessage
replyType
_
=
Nothing
-- | Data for display: a string with associated MIME type.
data
DisplayData
=
DisplayData
MimeType
ByteString
deriving
(
Typeable
,
Generic
)
data
DisplayData
=
DisplayData
MimeType
Text
deriving
(
Typeable
,
Generic
)
-- We can't print the actual data, otherwise this will be printed every
-- time it gets computed because of the way the evaluator is structured.
...
...
@@ -350,6 +350,9 @@ instance Show DisplayData where
show
_
=
"DisplayData"
-- Allow DisplayData serialization
instance
Serialize
Text
where
put
str
=
put
(
Text
.
encodeUtf8
str
)
get
=
Text
.
decodeUtf8
<$>
get
instance
Serialize
DisplayData
instance
Serialize
MimeType
...
...
@@ -369,7 +372,7 @@ extractPlain :: [DisplayData] -> String
extractPlain
disps
=
case
find
isPlain
disps
of
Nothing
->
""
Just
(
DisplayData
PlainText
bytestr
)
->
Char
.
unpack
bytestr
Just
(
DisplayData
PlainText
bytestr
)
->
Text
.
unpack
bytestr
where
isPlain
(
DisplayData
mime
_
)
=
mime
==
PlainText
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment