python 2.6 compatibility: add __hash__ to classes that have __eq__
authorPaul Moore <p.f.moore@gmail.com>
Fri, 04 Apr 2008 22:41:17 +0200
changeset 6469 fb502719c75c
parent 6468 af2edc9c5bb9
child 6470 ac0bcd951c2c
python 2.6 compatibility: add __hash__ to classes that have __eq__
mercurial/commands.py
mercurial/context.py
--- a/mercurial/commands.py	Fri Apr 04 22:18:38 2008 +0200
+++ b/mercurial/commands.py	Fri Apr 04 22:41:17 2008 +0200
@@ -1047,6 +1047,9 @@
             self.colstart = colstart
             self.colend = colend
 
+        def __hash__(self):
+            return hash((self.linenum, self.line))
+
         def __eq__(self, other):
             return self.line == other.line
 
--- a/mercurial/context.py	Fri Apr 04 22:18:38 2008 +0200
+++ b/mercurial/context.py	Fri Apr 04 22:41:17 2008 +0200
@@ -34,6 +34,12 @@
     def __repr__(self):
         return "<changectx %s>" % str(self)
 
+    def __hash__(self):
+        try:
+            return hash(self._rev)
+        except AttributeError:
+            return id(self)
+
     def __eq__(self, other):
         try:
             return self._rev == other._rev
@@ -210,6 +216,12 @@
     def __repr__(self):
         return "<filectx %s>" % str(self)
 
+    def __hash__(self):
+        try:
+            return hash((self._path, self._fileid))
+        except AttributeError:
+            return id(self)
+
     def __eq__(self, other):
         try:
             return (self._path == other._path