-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Serialization/deserialization using Python Pickle format. -- -- This package implements serialization and deserialization of Python -- objects using the Pickle format. @package python-pickle @version 0.3.0 -- | Very partial implementation of the Python Pickle Virtual Machine -- (protocol 2): i.e. parses pickled data into opcodes, then executes the -- opcodes to construct a (Haskell representation of a) Python object. module Language.Python.Pickle -- | Parse a pickled object to a list of opcodes. parse :: ByteString -> Either String [OpCode] -- | Unpickle (i.e. deserialize) a Python object. Protocols 0, 1, and 2 are -- supported. unpickle :: ByteString -> Either String Value -- | Pickle (i.e. serialize) a Python object. Protocol 2 is used. pickle :: Value -> ByteString opcodes :: [Parser OpCode] int :: Parser OpCode binint :: Parser OpCode binint1 :: Parser OpCode binint2 :: Parser OpCode long :: Parser OpCode long1 :: Parser OpCode long4 :: Parser OpCode string' :: Parser OpCode binstring :: Parser OpCode shortBinstring :: Parser OpCode binbytes :: Parser OpCode shortBinbytes :: Parser OpCode binbytes8 :: Parser OpCode bytearray8 :: Parser OpCode none :: Parser OpCode true :: Parser OpCode false :: Parser OpCode newtrue :: Parser OpCode newfalse :: Parser OpCode unicode :: Parser OpCode binunicode :: Parser OpCode shortBinunicode :: Parser OpCode binunicode8 :: Parser OpCode float :: Parser OpCode binfloat :: Parser OpCode emptyList :: Parser OpCode append :: Parser OpCode appends :: Parser OpCode list :: Parser OpCode emptyTuple :: Parser OpCode tuple :: Parser OpCode tuple1 :: Parser OpCode tuple2 :: Parser OpCode tuple3 :: Parser OpCode emptyDict :: Parser OpCode dict :: Parser OpCode setitem :: Parser OpCode setitems :: Parser OpCode emptySet :: Parser OpCode additems :: Parser OpCode frozenset :: Parser OpCode pop :: Parser OpCode dup :: Parser OpCode mark :: Parser OpCode popmark :: Parser OpCode stackGlobal :: Parser OpCode get' :: Parser OpCode binget :: Parser OpCode longBinget :: Parser OpCode put' :: Parser OpCode binput :: Parser OpCode longBinput :: Parser OpCode memoize :: Parser OpCode ext1 :: Parser OpCode ext2 :: Parser OpCode ext4 :: Parser OpCode global :: Parser OpCode reduce :: Parser OpCode build :: Parser OpCode inst :: Parser OpCode obj :: Parser OpCode newobj :: Parser OpCode newobjEx :: Parser OpCode frame :: Parser OpCode nextBuffer :: Parser OpCode readonlyBuffer :: Parser OpCode proto :: Parser OpCode stop :: Parser OpCode persid :: Parser OpCode binpersid :: Parser OpCode readSizedVal :: Integral i => ByteString -> Parser i -> (ByteString -> r) -> Parser r decimalInt :: Parser Integer doubleFloat :: Parser Double decimalLong :: Parser Integer decodeLong1 :: Parser Integer decodeLong4 :: Parser Integer byteStringLEToInteger :: ByteString -> Integer stringnl :: Parser ByteString stringnl' :: Parser ByteString float8 :: Parser Double anyInt32 :: Parser Int32 anyInt64 :: Parser Int64 uint2 :: Parser Integer serialize :: OpCode -> Put putFloat8 :: Double -> Put putUint2 :: Integer -> Put encodeLong1 :: Integer -> Put data OpCode INT :: Integer -> OpCode BININT :: Integer -> OpCode BININT1 :: Integer -> OpCode BININT2 :: Integer -> OpCode LONG :: Integer -> OpCode LONG1 :: Integer -> OpCode LONG4 :: Integer -> OpCode STRING :: ByteString -> OpCode BINSTRING :: ByteString -> OpCode SHORT_BINSTRING :: ByteString -> OpCode BINBYTES :: ByteString -> OpCode SHORT_BINBYTES :: ByteString -> OpCode BINBYTES8 :: ByteString -> OpCode BYTEARRAY8 :: ByteString -> OpCode NEXT_BUFFER :: OpCode READONLY_BUFFER :: OpCode NONE :: OpCode NEWTRUE :: OpCode NEWFALSE :: OpCode UNICODE :: Text -> OpCode BINUNICODE :: ByteString -> OpCode SHORT_BINUNICODE :: ByteString -> OpCode BINUNICODE8 :: ByteString -> OpCode FLOAT :: Double -> OpCode BINFLOAT :: Double -> OpCode EMPTY_LIST :: OpCode APPEND :: OpCode APPENDS :: OpCode LIST :: OpCode EMPTY_TUPLE :: OpCode TUPLE :: OpCode TUPLE1 :: OpCode TUPLE2 :: OpCode TUPLE3 :: OpCode EMPTY_DICT :: OpCode DICT :: OpCode SETITEM :: OpCode SETITEMS :: OpCode EMPTY_SET :: OpCode ADDITEMS :: OpCode FROZENSET :: OpCode POP :: OpCode DUP :: OpCode MARK :: OpCode POP_MARK :: OpCode GET :: Int -> OpCode BINGET :: Int -> OpCode LONG_BINGET :: Integer -> OpCode PUT :: Int -> OpCode BINPUT :: Int -> OpCode LONG_BINPUT :: Integer -> OpCode MEMOIZE :: OpCode EXT1 :: Int -> OpCode EXT2 :: Int -> OpCode EXT4 :: Int -> OpCode GLOBAL :: ByteString -> ByteString -> OpCode STACK_GLOBAL :: OpCode REDUCE :: OpCode BUILD :: OpCode INST :: ByteString -> ByteString -> OpCode OBJ :: OpCode NEWOBJ :: OpCode NEWOBJ_EX :: OpCode PROTO :: Int -> OpCode STOP :: OpCode FRAME :: Int64 -> OpCode PERSID :: ByteString -> OpCode BINPERSID :: OpCode data Value Dict :: [(Value, Value)] -> Value List :: [Value] -> Value Tuple :: [Value] -> Value Set :: Set Value -> Value FrozenSet :: Set Value -> Value None :: Value Bool :: Bool -> Value BinInt :: Integer -> Value BinLong :: Integer -> Value BinFloat :: Double -> Value BinString :: ByteString -> Value BinUnicode :: ByteString -> Value ClassObject :: ByteString -> ByteString -> Value ObjectInstance :: Value MarkObject :: Value unpickle' :: [OpCode] -> Either String Value type Stack = [Value] type Memo = IntMap Value execute :: [OpCode] -> Stack -> Memo -> Either String Value executePartial :: [OpCode] -> Stack -> Memo -> (Stack, Memo, [OpCode]) executeOne :: OpCode -> Stack -> Memo -> Either String (Stack, Memo) eOneErr :: String -> Stack -> Memo -> Either String (Stack, Memo) executeLookup :: Int -> Stack -> Memo -> Either String (Stack, Memo) executeTuple :: [Value] -> Stack -> Memo -> Either String ([Value], Memo) executeDict :: [(Value, Value)] -> Stack -> Memo -> Either String ([Value], Memo) executeList :: [Value] -> Stack -> Memo -> Either String ([Value], Memo) executeSetitem :: Stack -> Memo -> Either String ([Value], Memo) executeSetitems :: [(Value, Value)] -> Stack -> Memo -> Either String ([Value], Memo) executeAppend :: Stack -> Memo -> Either String ([Value], Memo) executeAppends :: [Value] -> Stack -> Memo -> Either String ([Value], Memo) executeFrozenSet :: Set Value -> Stack -> Memo -> Either String ([Value], Memo) addToDict :: [(Value, Value)] -> Value -> Value newtype Pickler a Pickler :: WriterT [OpCode] (State (Map Value Int)) a -> Pickler a [runP] :: Pickler a -> WriterT [OpCode] (State (Map Value Int)) a runPickler :: Pickler () -> [OpCode] pickle' :: Value -> Pickler () binput' :: Value -> Pickler () pickleDict :: [(Value, Value)] -> Pickler () pickleList :: [Value] -> Pickler () pickleTuple :: [Value] -> Pickler () pickleBinInt :: Integer -> Pickler () pickleBinLong :: Integer -> Pickler () pickleBinFloat :: Double -> Pickler () pickleBinString :: ByteString -> Pickler () pickleBinUnicode :: ByteString -> Pickler () dictGet :: Value -> Value -> Either String (Maybe Value) dictGet' :: Value -> Value -> Either String Value dictGetString :: Value -> ByteString -> Either String ByteString class FromValue a fromVal :: FromValue a => Value -> Maybe a instance GHC.Show.Show Language.Python.Pickle.OpCode instance GHC.Show.Show Language.Python.Pickle.Value instance GHC.Classes.Ord Language.Python.Pickle.Value instance GHC.Classes.Eq Language.Python.Pickle.Value instance Control.Monad.State.Class.MonadState (Data.Map.Internal.Map Language.Python.Pickle.Value GHC.Types.Int) Language.Python.Pickle.Pickler instance Control.Monad.Writer.Class.MonadWriter [Language.Python.Pickle.OpCode] Language.Python.Pickle.Pickler instance GHC.Base.Monad Language.Python.Pickle.Pickler instance GHC.Base.Applicative Language.Python.Pickle.Pickler instance GHC.Base.Functor Language.Python.Pickle.Pickler instance Language.Python.Pickle.FromValue GHC.Types.Int instance Language.Python.Pickle.FromValue GHC.Num.Integer.Integer instance Language.Python.Pickle.FromValue Data.ByteString.Internal.Type.ByteString instance Language.Python.Pickle.FromValue GHC.Types.Double instance Language.Python.Pickle.FromValue Data.Text.Internal.Text instance Language.Python.Pickle.FromValue GHC.Types.Bool instance Language.Python.Pickle.FromValue a => Language.Python.Pickle.FromValue [a] instance (Language.Python.Pickle.FromValue a, GHC.Classes.Ord a) => Language.Python.Pickle.FromValue (Data.Set.Internal.Set a) instance (Language.Python.Pickle.FromValue k, Language.Python.Pickle.FromValue v, GHC.Classes.Ord k) => Language.Python.Pickle.FromValue (Data.Map.Internal.Map k v) instance (Language.Python.Pickle.FromValue a, Language.Python.Pickle.FromValue b) => Language.Python.Pickle.FromValue (a, b) instance (Language.Python.Pickle.FromValue a, Language.Python.Pickle.FromValue b, Language.Python.Pickle.FromValue c) => Language.Python.Pickle.FromValue (a, b, c) instance (Language.Python.Pickle.FromValue a, Language.Python.Pickle.FromValue b, Language.Python.Pickle.FromValue c, Language.Python.Pickle.FromValue d) => Language.Python.Pickle.FromValue (a, b, c, d) instance (Language.Python.Pickle.FromValue a, Language.Python.Pickle.FromValue b, Language.Python.Pickle.FromValue c, Language.Python.Pickle.FromValue d, Language.Python.Pickle.FromValue e) => Language.Python.Pickle.FromValue (a, b, c, d, e) instance (Language.Python.Pickle.FromValue a, Language.Python.Pickle.FromValue b, Language.Python.Pickle.FromValue c, Language.Python.Pickle.FromValue d, Language.Python.Pickle.FromValue e, Language.Python.Pickle.FromValue f) => Language.Python.Pickle.FromValue (a, b, c, d, e, f) instance (Language.Python.Pickle.FromValue a, Language.Python.Pickle.FromValue b, Language.Python.Pickle.FromValue c, Language.Python.Pickle.FromValue d, Language.Python.Pickle.FromValue e, Language.Python.Pickle.FromValue f, Language.Python.Pickle.FromValue g) => Language.Python.Pickle.FromValue (a, b, c, d, e, f, g)