diff options
author | Zac Medico <zmedico@gentoo.org> | 2008-05-05 21:06:30 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2008-05-05 21:06:30 +0000 |
commit | c94e1dd32929829dcd8d05a7040ce95d669957bb (patch) | |
tree | 4065be28f0c40167d612efc3d669349797319d30 | |
parent | 85f56a86185e54f35b5f8e13866ed7c6654f200a (diff) | |
download | portage-c94e1dd32929829dcd8d05a7040ce95d669957bb.tar.gz portage-c94e1dd32929829dcd8d05a7040ce95d669957bb.tar.bz2 portage-c94e1dd32929829dcd8d05a7040ce95d669957bb.zip |
Cache results for Task.__hash__() calls.
svn path=/main/trunk/; revision=10210
-rw-r--r-- | pym/_emerge/__init__.py | 7 |
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()) |