From: Raymond Hettinger Date: Sun, 21 Sep 2003 04:51:46 +0000 (+0000) Subject: Backport Greg's patch (1.7 to 1.8) for backwards code compatability. X-Git-Tag: v2.3.1~31 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6a5596cc5283a4d887d53be95bf7ef651028daf8;p=thirdparty%2FPython%2Fcpython.git Backport Greg's patch (1.7 to 1.8) for backwards code compatability. --- diff --git a/Lib/bsddb/__init__.py b/Lib/bsddb/__init__.py index 2910236b3d74..6b4f96518802 100644 --- a/Lib/bsddb/__init__.py +++ b/Lib/bsddb/__init__.py @@ -52,9 +52,38 @@ error = db.DBError # So bsddb.error will mean something... #---------------------------------------------------------------------- +import sys + +# for backwards compatibility with python versions older than 2.3, the +# iterator interface is dynamically defined and added using a mixin +# class. old python can't tokenize it due to the yield keyword. +if sys.version >= '2.3': + exec """ import UserDict +class _iter_mixin(UserDict.DictMixin): + def __iter__(self): + try: + yield self.first()[0] + next = self.next + while 1: + yield next()[0] + except _bsddb.DBNotFoundError: + return + + def iteritems(self): + try: + yield self.first() + next = self.next + while 1: + yield next() + except _bsddb.DBNotFoundError: + return +""" +else: + class _iter_mixin: pass -class _DBWithCursor(UserDict.DictMixin): + +class _DBWithCursor(_iter_mixin): """ A simple wrapper around DB that makes it look like the bsddbobject in the old module. It uses a cursor as needed to provide DB traversal. @@ -145,23 +174,6 @@ class _DBWithCursor(UserDict.DictMixin): self._checkOpen() return self.db.sync() - def __iter__(self): - try: - yield self.first()[0] - next = self.next - while 1: - yield next()[0] - except _bsddb.DBNotFoundError: - return - - def iteritems(self): - try: - yield self.first() - next = self.next - while 1: - yield next() - except _bsddb.DBNotFoundError: - return #---------------------------------------------------------------------- # Compatibility object factory functions