| 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)) |