Commit cec1b3f6 authored by Gregory P. Smith's avatar Gregory P. Smith

Maintain backwards compatibility with python < 2.3 by dynamically

adding the iterator interface for python >= 2.3.
parent 0aab0020
...@@ -52,9 +52,38 @@ error = db.DBError # So bsddb.error will mean something... ...@@ -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 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 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. the old module. It uses a cursor as needed to provide DB traversal.
...@@ -145,23 +174,6 @@ class _DBWithCursor(UserDict.DictMixin): ...@@ -145,23 +174,6 @@ class _DBWithCursor(UserDict.DictMixin):
self._checkOpen() self._checkOpen()
return self.db.sync() 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 # Compatibility object factory functions
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment