| import python_pickle |
| |
| import pickle |
| import sys |
| |
| def check(p): |
| msg = p.msg |
| if msg != "hi there": |
| raise RuntimeError("Bad, got: " + msg) |
| |
| python_pickle.cvar.trace = False |
| |
| p = python_pickle.PickleMe("hi there") |
| check(p) |
| |
| r = p.__reduce__() |
| if python_pickle.cvar.trace: |
| print("__reduce__ returned: {}".format(r)) |
| pickle_string = pickle.dumps(p) |
| newp = pickle.loads(pickle_string) |
| check(newp) |
| |
| # Not yet working... some crash and others are not producing a sensible "can't be pickled" error |
| #nfp = python_pickle.NotForPickling("no no") |
| #print("{}".format(nfp.__reduce__())) |
| #pickle_string = pickle.dumps(nfp) |
| #print("{}".format(pickle_string)) |
| #newp = pickle.loads(pickle_string) |
| #print("{}".format(newp.msg)) |