Joel Hedlund wrote:
Duncan Booth wrote:
I think you probably are correct. The only thing I can think that might help is if you can catch all the situations where changes to the dependent values might change the hash and wrap them up: before changing the hash pop the item out of the dict, then reinsert it after the change.

That would probably require a lot of uncomfortable signal handling, especially for a piece of functionality I'd like to be as unobtrusive as possible in the application.

Alternatively give up on defining hash and __eq__ for FragmentInfo and rely on object identity instead.
Perhaps your hash function could be something like:

     class HashedCache(dict):
         def __init__(self, dictionary):
             self.update(dictionary)
             self._hash = hash(tuple(sorted(dictionary.keys())))

         def __hash__(self):
             return self._hash


--Scott David Daniels
scott.dani...@acm.org
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to