Prechádzať zdrojové kódy

Replace built-in hash function with hashlib.

The built-in hash function returns inconsistent values in Python 3.
9m66p93w 12 rokov pred
rodič
commit
6bc745fe45
1 zmenil súbory, kde vykonal 7 pridanie a 2 odobranie
  1. 7 2
      radicale/ical.py

+ 7 - 2
radicale/ical.py

@@ -27,6 +27,7 @@ Define the main classes of a collection as seen from the server.
 
 import os
 import posixpath
+import hashlib
 from uuid import uuid4
 from random import randint
 from contextlib import contextmanager
@@ -109,7 +110,9 @@ class Item(object):
                 "\nEND:", "\nX-RADICALE-NAME:%s\nEND:" % self._name)
 
     def __hash__(self):
-        return hash(self.text)
+        m = hashlib.md5()
+        m.update(self.text.encode('utf-8'))
+        return m.hexdigest()
 
     def __eq__(self, item):
         return isinstance(item, Item) and self.text == item.text
@@ -437,7 +440,9 @@ class Collection(object):
     @property
     def etag(self):
         """Etag from collection."""
-        return '"%s"' % hash(self.text)
+        m = hashlib.md5()
+        m.update(self.text.encode('utf-8'))
+        return '"%s"' % m.hexdigest()
 
     @property
     def name(self):