1 import pickle
2 def get_pickling_errors(obj,seen=None):
3 if seen == None:
4 seen = []
5 try:
6 state = obj.__getstate__()
7 except AttributeError:
8 return
9 if state == None:
10 return
11 if isinstance(state,tuple):
12 if not isinstance(state[0],dict):
13 state=state[1]
14 else:
15 state=state[0].update(state[1])
16 result = {}
17 for i in state:
18 try:
19 pickle.dumps(state,protocol=2)
20 except pickle.PicklingError:
21 if not state in seen:
22 seen.append(state)
23 result=get_pickling_errors(state,seen)
24 return result