Hacking/debug python unexpected dictionary modification
< Hacking
A small code snippet to help debugging when you have an unexpected modification in your python code. In short, you replace the dictionary by a proxy that will trigger "intelligently" when the unexpected modification occurs.
Original code
Let's say your original code is as follow:
theDict = { ... } dothings... theDict['foo'] = 'bar' doMoreThings... # theDict shouldn't change after this point doOtherThings... #At this point, I realize that (for example) theDict['foo'] as disappeared.
Now the question is: how to find when the value was deleted ?
Modified:
_theDict = { ... } theDict = _DictProxy(_theDict)
Where _DictProxy is:
class _DictProxy: def __init__(self, d): self.d = d def get(self, k, default=None): return self.d.get(k, None) def __setitem__(self, k, v): if k == '<key not expected to be modified>': raise Exception('here') self.d[k] = v
Comments
<comments/>