diff options
author | Zac Medico <zmedico@gentoo.org> | 2007-06-22 02:50:33 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2007-06-22 02:50:33 +0000 |
commit | e5145157dbdb9c2683d1ab8176641f19d2dc5d4e (patch) | |
tree | bb858e72885b464b80e22ad228d158376c46307a /pym/cache/template.py | |
parent | 817be01f9ea3e703a861e4ec8ade82683903232a (diff) | |
download | portage-e5145157dbdb9c2683d1ab8176641f19d2dc5d4e.tar.gz portage-e5145157dbdb9c2683d1ab8176641f19d2dc5d4e.tar.bz2 portage-e5145157dbdb9c2683d1ab8176641f19d2dc5d4e.zip |
Implement iterkeys on top of __iter__ instead of vice versa. Thanks to Brian Harring for the suggestion. (trunk r6918)
svn path=/main/branches/2.1.2/; revision=6934
Diffstat (limited to 'pym/cache/template.py')
-rw-r--r-- | pym/cache/template.py | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/pym/cache/template.py b/pym/cache/template.py index d19bb8892..6457f59e5 100644 --- a/pym/cache/template.py +++ b/pym/cache/template.py @@ -95,7 +95,7 @@ class database(object): return tuple(self.iterkeys()) def iterkeys(self): - raise NotImplementedError + return iter(self) def iteritems(self): for x in self.iterkeys(): @@ -123,6 +123,16 @@ class database(object): raise NotImplementedError return self.has_key(cpv) + def __iter__(self): + """This method should always be overridden. It is provided only for + backward compatibility with modules that override iterkeys instead. It + will automatically raise a NotImplementedError if iterkeys has not been + overridden.""" + if self.iterkeys is database.iterkeys: + # prevent a possible recursive loop + raise NotImplementedError(self) + return self.iterkeys() + def get(self, k, x=None): try: return self[k] |