icon: package
Save Python object graphs as bytes and restore them within pocketpy.
| Function | Result |
|---|---|
dumps(obj) |
Serialized bytes. |
loads(data: bytes) |
Restored object. |
!!!warning Only load data you trust. Deserialization can resolve classes and call reconstruction functions. This is pocketpy's own format, not CPython's pickle protocol; use a matching runtime when exchanging saved data. !!!
import pickle
shared = ['coin']
inventory = [shared, shared]
restored = pickle.loads(pickle.dumps(inventory))
assert restored == [['coin'], ['coin']]
assert restored[0] is restored[1]
cycle = []
cycle.append(cycle)
restored_cycle = pickle.loads(pickle.dumps(cycle))
assert restored_cycle[0] is restored_cycle
None, booleans, integers, floats, strings, and bytes.Functions and classes are resolved by their module/name; their source code is not packed into the data. Make those definitions available when loading, especially in a worker VM. Lambdas and local functions are not suitable replacements for module-level definitions.
Lists, dictionaries, and Python class instances are memoized before their
contents, preserving shared identity and supported reference cycles.
Cycles involving a tuple or a __reduce__ reconstruction can be restricted;
a tuple-only cycle or a self-reference through a reduce result is unsupported.
array2d instances cannot be pickled and raise TypeError.
Previously pickled array2d data is not supported. Convert appropriate
contents to lists if needed.
__reduce__() must return a two-item tuple
(reconstruction_callable, argument_tuple).
The callable must be resolvable when loading. The hooks __getnewargs__,
__getstate__, and __setstate__ are not implemented.
Implementation: pickle.c.