Fix compatibility for earlier versions of Python (than 2.3), which

doesn't have UserDict.DictMixin.
This commit is contained in:
Barry Warsaw 2003-02-08 03:18:58 +00:00
parent 07534a607b
commit 9914227caa
2 changed files with 15 additions and 5 deletions

View file

@ -16,7 +16,12 @@
# #
import db import db
from UserDict import DictMixin
try:
from UserDict import DictMixin
except ImportError:
# DictMixin is new in Python 2.3
class DictMixin: pass
class DBEnv: class DBEnv:
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):

View file

@ -30,7 +30,11 @@ storage.
#------------------------------------------------------------------------ #------------------------------------------------------------------------
import cPickle import cPickle
from UserDict import DictMixin try:
from UserDict import DictMixin
except ImportError:
# DictMixin is new in Python 2.3
class DictMixin: pass
try: try:
# For Python 2.3 # For Python 2.3
from bsddb import db from bsddb import db
@ -77,8 +81,7 @@ def open(filename, flags=db.DB_CREATE, mode=0660, filetype=db.DB_HASH,
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
class DBShelf(DictMixin): class DBShelf(DictMixin):
""" """A shelf to hold pickled objects, built upon a bsddb DB object. It
A shelf to hold pickled objects, built upon a bsddb DB object. It
automatically pickles/unpickles data objects going to/from the DB. automatically pickles/unpickles data objects going to/from the DB.
""" """
def __init__(self, dbenv=None): def __init__(self, dbenv=None):
@ -91,7 +94,9 @@ class DBShelf(DictMixin):
def __getattr__(self, name): def __getattr__(self, name):
"""Many methods we can just pass through to the DB object. (See below)""" """Many methods we can just pass through to the DB object.
(See below)
"""
return getattr(self.db, name) return getattr(self.db, name)