You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Ulric Qin 70e2cefd98
go mod vendor
4 years ago
..
.gitignore go mod vendor 4 years ago
LICENSE go mod vendor 4 years ago
README.md go mod vendor 4 years ago
fuzz.go go mod vendor 4 years ago
helpers.go go mod vendor 4 years ago
jump_list.go go mod vendor 4 years ago
opcodes.go go mod vendor 4 years ago
pickle_machine.go go mod vendor 4 years ago
pickle_writer.go go mod vendor 4 years ago
populate_jump_list.go go mod vendor 4 years ago
protocol_0.go go mod vendor 4 years ago
protocol_1.go go mod vendor 4 years ago
protocol_2.go go mod vendor 4 years ago
python_types.go go mod vendor 4 years ago
tuple.go go mod vendor 4 years ago
unpack.go go mod vendor 4 years ago

README.md

#stalecucumber

This package reads and writes pickled data. The format is the same as the Python "pickle" module.

Protocols 0,1,2 are implemented. These are the versions written by the Python 2.x series. Python 3 defines newer protocol versions, but can write the older protocol versions so they are readable by this package.

Full documentation is available here.

##TLDR

Read a pickled string or unicode object

pickle.dumps("foobar")
---
var somePickledData io.Reader
mystring, err := stalecucumber.String(stalecucumber.Unpickle(somePickledData))

Read a pickled integer

pickle.dumps(42)
---
var somePickledData io.Reader
myint64, err := stalecucumber.Int(stalecucumber.Unpickle(somePickledData))

Read a pickled list of numbers into a structure

pickle.dumps([8,8,2005])
---
var somePickledData io.Reader
numbers := make([]int64,0)

err := stalecucumber.UnpackInto(&numbers).From(stalecucumber.Unpickle(somePickledData))

Read a pickled dictionary into a structure

pickle.dumps({"apple":1,"banana":2,"cat":"hello","Dog":42.0})
---
var somePickledData io.Reader
mystruct := struct{
	Apple int
	Banana uint
	Cat string
	Dog float32}{}

err := stalecucumber.UnpackInto(&mystruct).From(stalecucumber.Unpickle(somePickledData))

Pickle a struct

buf := new(bytes.Buffer)
mystruct := struct{
		Apple int
		Banana uint
		Cat string
		Dog float32}{}

err := stalecucumber.NewPickler(buf).Pickle(mystruct)