From b5cf301b8e7e23ed5fddc369d24c856e48e9b27b Mon Sep 17 00:00:00 2001 From: Amaury Forgeot d'Arc Date: Thu, 25 Sep 2008 22:27:43 +0000 Subject: #3929: dbm.open() would try to raise a tuple. This does not work anymore with python 3.0. Reviewed by Georg Brandl. --- Lib/dbm/__init__.py | 8 ++++---- Lib/test/test_dbm.py | 3 +++ Misc/NEWS | 4 ++++ 3 files changed, 11 insertions(+), 4 deletions(-) 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 @@ def open(file, flag = 'r', mode = 0o666): # 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 @@ class AnyDBMTestCase(unittest.TestCase): 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 @@ Core and Builtins 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 -- cgit v0.12