#3929: dbm.open() would try to raise a tuple.  This does not work anymore with python 3.0.

Reviewed by Georg Brandl.
diff --git a/Lib/dbm/__init__.py b/Lib/dbm/__init__.py
index 2082e07..19a7072 100644
--- a/Lib/dbm/__init__.py
+++ b/Lib/dbm/__init__.py
@@ -76,13 +76,13 @@
             # file doesn't exist and the new flag was used so use default type
             mod = _defaultmod
         else:
-            raise error("need 'c' or 'n' flag to open new db")
+            raise error[0]("need 'c' or 'n' flag to open new db")
     elif result == "":
         # db type cannot be determined
-        raise error("db type could not be determined")
+        raise error[0]("db type could not be determined")
     elif result not in _modules:
-        raise error("db type is {0}, but the module is not "
-                    "available".format(result))
+        raise error[0]("db type is {0}, but the module is not "
+                       "available".format(result))
     else:
         mod = _modules[result]
     return mod.open(file, flag, mode)
diff --git a/Lib/test/test_dbm.py b/Lib/test/test_dbm.py
index 41c37cb..ee82dd2 100644
--- a/Lib/test/test_dbm.py
+++ b/Lib/test/test_dbm.py
@@ -57,6 +57,9 @@
     def test_error(self):
         self.assert_(issubclass(self.module.error, IOError))
 
+    def test_anydbm_not_existing(self):
+        self.assertRaises(dbm.error, dbm.open, _fname)
+
     def test_anydbm_creation(self):
         f = dbm.open(_fname, 'c')
         self.assertEqual(list(f.keys()), [])
diff --git a/Misc/NEWS b/Misc/NEWS
index c1ab3d3..36240ed 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -20,6 +20,10 @@
 Library
 -------
 
+- Issue #3929: When the database cannot be opened, dbm.open() would incorrectly
+  raise a TypeError: "'tuple' object is not callable" instead of the expected
+  dbm.error.
+
 - Bug #3884: Make the turtle module toplevel again.
 
 - Issue #3547: Fixed ctypes structures bitfields of varying integer