Skip to content

Pysafe PickleSafe, Fast, Schema-Evolvable Object Graph Serialization

Powered by Rust. No arbitrary code execution on load. Familiar pickle-style API.

pysafe-pickle logo

Supported Types ​

None, bool, arbitrary-size int, float, complex, str (including lone surrogates), bytes, bytearray, list, tuple, dict, set, frozenset, datetime/date/time/timedelta/timezone, ZoneInfo, Decimal, UUID, Fraction, range, slice, Ellipsis, NotImplemented, pathlib paths, OrderedDict, defaultdict (builtin factories), Counter, deque, @dataclass instances, namedtuples and Enum members. Anything else raises UnsafeTypeError: Unsupported type.

Quick Example ​

python
import datetime as dt
from dataclasses import dataclass
import pysafe_pickle as psp

@dataclass
class User:
    name: str
    joined: dt.date
    email: str = ""

# Serialize (and sign) with Rust
data = psp.dumps(User("Alice", dt.date(2026, 10, 28)), hmac_key=b"secret")

# Verify, then deserialize without running any code from the payload
user = psp.loads(data, hmac_key=b"secret", classes=[User])
print(user)  # User(name='Alice', joined=datetime.date(2026, 10, 28), email='')
print(isinstance(user, User))  # True

Community & Ecosystem ​

Released under the AGPL-3.0 License.