+ @property
+ def _name(self):
+ return repr(self._get_raw_conversations.__name__)
+
+ def load(self, path):
+ assert not self._conversations
+ try:
+ with open(path, "rb") as f:
+ fileVersion, fileBuild, convs = pickle.load(f)
+ except (pickle.PickleError, IOError, EOFError, ValueError):
+ _moduleLogger.exception("While loading for %s" % self._name)
+ return
+
+ if misc_utils.compare_versions(
+ misc_utils.parse_version("0.8.0"),
+ misc_utils.parse_version(fileVersion),
+ ) <= 0:
+ self._conversations = convs
+ else:
+ _moduleLogger.debug(
+ "%s Skipping cache due to version mismatch (%s-%s)" % (
+ self._name, fileVersion, fileBuild
+ )
+ )
+
+ def save(self, path):
+ try:
+ dataToDump = (constants.__version__, constants.__build__, self._conversations)
+ with open(path, "wb") as f:
+ pickle.dump(dataToDump, f, pickle.HIGHEST_PROTOCOL)
+ except (pickle.PickleError, IOError):
+ _moduleLogger.exception("While saving for %s" % self._name)
+