summaryrefslogtreecommitdiffstats
path: root/pym/_emerge
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2008-05-05 21:06:30 +0000
committerZac Medico <zmedico@gentoo.org>2008-05-05 21:06:30 +0000
commitc94e1dd32929829dcd8d05a7040ce95d669957bb (patch)
tree4065be28f0c40167d612efc3d669349797319d30 /pym/_emerge
parent85f56a86185e54f35b5f8e13866ed7c6654f200a (diff)
downloadportage-c94e1dd32929829dcd8d05a7040ce95d669957bb.tar.gz
portage-c94e1dd32929829dcd8d05a7040ce95d669957bb.tar.bz2
portage-c94e1dd32929829dcd8d05a7040ce95d669957bb.zip
Cache results for Task.__hash__() calls.
svn path=/main/trunk/; revision=10210
Diffstat (limited to 'pym/_emerge')
-rw-r--r--pym/_emerge/__init__.py7
1 files changed, 5 insertions, 2 deletions
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py
index 378b4e21d..1baaff7f8 100644
--- a/pym/_emerge/__init__.py
+++ b/pym/_emerge/__init__.py
@@ -1220,7 +1220,7 @@ def show_masked_packages(masked_packages):
return have_eapi_mask
class Task(SlotObject):
- __slots__ = ("_hash_key",)
+ __slots__ = ("_hash_key", "_hash_value")
def _get_hash_key(self):
hash_key = getattr(self, "_hash_key", None)
@@ -1235,7 +1235,10 @@ class Task(SlotObject):
return self._get_hash_key() != other
def __hash__(self):
- return hash(self._get_hash_key())
+ hash_value = getattr(self, "_hash_value", None)
+ if hash_value is None:
+ self._hash_value = hash(self._get_hash_key())
+ return self._hash_value
def __len__(self):
return len(self._get_hash_key())