Fixed to the point that all unit tests pass again.  (However, I get 4
"exception in thread" messages, one about a killed locker, and three
assertions.)  Details:

test/test_dbshelve.py:
- kill reference to InstanceType

test/test_basics.py:
- use // for int division
- use 'in' instead of has_key

dbshelve.py:
- fix bug in previous has_key fix, use self.db.has_key instead of self.has_key

dbtables.py:
- use 'in' instead of has_key

dbutils.py:
- fix bug in previous has_key fix, test for 'max_retries', not 'max_tries'
diff --git a/Lib/bsddb/dbshelve.py b/Lib/bsddb/dbshelve.py
index afc1a1a..8530c9a 100644
--- a/Lib/bsddb/dbshelve.py
+++ b/Lib/bsddb/dbshelve.py
@@ -198,7 +198,7 @@
 
 
     def __contains__(self, key):
-        return self.has_key(key)
+        return self.db.has_key(key)
 
 
     #----------------------------------------------
diff --git a/Lib/bsddb/dbtables.py b/Lib/bsddb/dbtables.py
index 492d5fd..655fb96 100644
--- a/Lib/bsddb/dbtables.py
+++ b/Lib/bsddb/dbtables.py
@@ -323,7 +323,7 @@
                 # column names
                 newcolumnlist = copy.copy(oldcolumnlist)
                 for c in columns:
-                    if not oldcolumnhash.has_key(c):
+                    if c not in oldcolumnhash:
                         newcolumnlist.append(c)
 
                 # store the table's new extended column list
@@ -389,7 +389,7 @@
                 raise TableDBError, "unknown table"
 
             # check the validity of each column name
-            if not self.__tablecolumns.has_key(table):
+            if table not in self.__tablecolumns:
                 self.__load_column_info(table)
             for column in rowdict.keys() :
                 if not self.__tablecolumns[table].count(column):
@@ -521,7 +521,7 @@
           argument and returning a boolean.
         """
         try:
-            if not self.__tablecolumns.has_key(table):
+            if table not in self.__tablecolumns:
                 self.__load_column_info(table)
             if columns is None:
                 columns = self.__tablecolumns[table]
@@ -542,7 +542,7 @@
         argument and returning a boolean.
         """
         # check the validity of each column name
-        if not self.__tablecolumns.has_key(table):
+        if table not in self.__tablecolumns:
             self.__load_column_info(table)
         if columns is None:
             columns = self.tablecolumns[table]
@@ -601,16 +601,16 @@
                     # extract the rowid from the key
                     rowid = key[-_rowid_str_len:]
 
-                    if not rejected_rowids.has_key(rowid):
+                    if rowid not in rejected_rowids:
                         # if no condition was specified or the condition
                         # succeeds, add row to our match list.
                         if not condition or condition(data):
-                            if not matching_rowids.has_key(rowid):
+                            if rowid not in matching_rowids:
                                 matching_rowids[rowid] = {}
                             if savethiscolumndata:
                                 matching_rowids[rowid][column] = data
                         else:
-                            if matching_rowids.has_key(rowid):
+                            if rowid in matching_rowids:
                                 del matching_rowids[rowid]
                             rejected_rowids[rowid] = rowid
 
@@ -631,7 +631,7 @@
         if len(columns) > 0:
             for rowid, rowdata in matching_rowids.items():
                 for column in columns:
-                    if rowdata.has_key(column):
+                    if column in rowdata:
                         continue
                     try:
                         rowdata[column] = self.db.get(
@@ -697,7 +697,7 @@
             txn.commit()
             txn = None
 
-            if self.__tablecolumns.has_key(table):
+            if table in self.__tablecolumns:
                 del self.__tablecolumns[table]
 
         except DBError, dberror:
diff --git a/Lib/bsddb/dbutils.py b/Lib/bsddb/dbutils.py
index 0c4c1cb..daec873 100644
--- a/Lib/bsddb/dbutils.py
+++ b/Lib/bsddb/dbutils.py
@@ -55,7 +55,7 @@
     """
     sleeptime = _deadlock_MinSleepTime
     max_retries = _kwargs.get('max_retries', -1)
-    if 'max_tries' in _kwargs:
+    if 'max_retries' in _kwargs:
         del _kwargs['max_retries']
     while True:
         try:
diff --git a/Lib/bsddb/test/test_basics.py b/Lib/bsddb/test/test_basics.py
index f7f4c2d..7e6ba52 100644
--- a/Lib/bsddb/test/test_basics.py
+++ b/Lib/bsddb/test/test_basics.py
@@ -114,14 +114,14 @@
     def populateDB(self, _txn=None):
         d = self.d
 
-        for x in range(self._numKeys/2):
+        for x in range(self._numKeys//2):
             key = '%04d' % (self._numKeys - x)  # insert keys in reverse order
             data = self.makeData(key)
             d.put(key, data, _txn)
 
         d.put('empty value', '', _txn)
 
-        for x in range(self._numKeys/2-1):
+        for x in range(self._numKeys//2-1):
             key = '%04d' % x  # and now some in forward order
             data = self.makeData(key)
             d.put(key, data, _txn)
@@ -686,10 +686,10 @@
 
         if db.version() >= (4,0):
             statDict = self.env.log_stat(0);
-            assert statDict.has_key('magic')
-            assert statDict.has_key('version')
-            assert statDict.has_key('cur_file')
-            assert statDict.has_key('region_nowait')
+            assert 'magic' in statDict
+            assert 'version' in statDict
+            assert 'cur_file' in statDict
+            assert 'region_nowait' in statDict
 
         # must have at least one log file present:
         logs = self.env.log_archive(db.DB_ARCH_ABS | db.DB_ARCH_LOG)
diff --git a/Lib/bsddb/test/test_dbshelve.py b/Lib/bsddb/test/test_dbshelve.py
index bb85bf7..002bda9 100644
--- a/Lib/bsddb/test/test_dbshelve.py
+++ b/Lib/bsddb/test/test_dbshelve.py
@@ -187,7 +187,6 @@
             assert value == [x] * 10
 
         elif key[0] == 'O':
-            assert type(value) == InstanceType
             assert value.S == 10 * x
             assert value.I == ord(x)
             assert value.L == [x] * 10