From 1e3cbc2874eee2ac70341ade551260e76cba3170 Mon Sep 17 00:00:00 2001 From: mike Date: Sat, 05 Dec 2009 20:13:31 +0000 Subject: Creator : reverting property container changes (removing the __id broke the event callback) --- diff --git a/tutorius/TProbe.py b/tutorius/TProbe.py index e2fe556..2834f0c 100644 --- a/tutorius/TProbe.py +++ b/tutorius/TProbe.py @@ -499,8 +499,6 @@ class ProbeProxy: @return address identifier used for unsubscribing """ LOGGER.debug("ProbeProxy :: Registering event %s", str(hash(event))) - #if not block: - # raise RuntimeError("This function does not allow non-blocking mode yet") # TODO elavoie 2009-07-25 When we will allow for patterns both # for event types and sources, we will need to revise the lookup diff --git a/tutorius/properties.py b/tutorius/properties.py index f273569..07b1645 100644 --- a/tutorius/properties.py +++ b/tutorius/properties.py @@ -138,7 +138,29 @@ class TPropContainer(object): """ Return a deep copy of the dictionary of properties from that object. """ - return deepcopy(self._props) + return deepcopy(self._props) + + def __hash__(self): + """ + Deprecated. + + Property containers should not be used as keys inside dictionary for + the time being. Since containers are mutable, we should definitely + use the addressing mechanism to refer to the containers. + """ + # Many places we use containers as keys to store additional data. + # Since containers are mutable, there is a need for a hash function + # where the result is constant, so we can still lookup old instances. + return self.__id + + # Adding methods for pickling and unpickling an object with + # properties + def __getstate__(self): + return dict(id=self.__id, props=self._props.copy()) + + def __setstate__(self, dict): + self.__id = dict['id'] + self._props.update(dict['props']) def __eq__(self, e2): return (isinstance(e2, type(self)) and self._props == e2._props) -- cgit v0.9.1