diff --git a/Doc/library/bsddb.rst b/Doc/library/bsddb.rst index 5a8d3799cf0..1905c14daf7 100644 --- a/Doc/library/bsddb.rst +++ b/Doc/library/bsddb.rst @@ -82,7 +82,8 @@ arguments should be used in most instances. Beginning in 2.3 some Unix versions of Python may have a :mod:`bsddb185` module. This is present *only* to allow backwards compatibility with systems which ship with the old Berkeley DB 1.85 database library. The :mod:`bsddb185` module - should never be used directly in new code. + should never be used directly in new code. The module has been removed in + Python 3.0. .. seealso:: diff --git a/Lib/test/test_bsddb185.py b/Lib/test/test_bsddb185.py index 51e1a7eb8d3..98102c14579 100644 --- a/Lib/test/test_bsddb185.py +++ b/Lib/test/test_bsddb185.py @@ -4,9 +4,9 @@ The file 185test.db found in Lib/test/ is for testing purposes with this testing suite. """ -from test.test_support import run_unittest, findfile +from test.test_support import run_unittest, findfile, import_module import unittest -import bsddb185 +bsddb185 = import_module('bsddb185', deprecated=True) import anydbm import whichdb import os diff --git a/Lib/test/test_py3kwarn.py b/Lib/test/test_py3kwarn.py index 22257e1d1e6..ae5713476e4 100644 --- a/Lib/test/test_py3kwarn.py +++ b/Lib/test/test_py3kwarn.py @@ -131,6 +131,7 @@ class TestStdlibRemovals(unittest.TestCase): all_platforms = ('audiodev', 'imputil', 'mutex', 'user', 'new', 'rexec', 'Bastion') inclusive_platforms = {'irix':('pure',)} + optional_modules = ('bsddb185',) def check_removal(self, module_name, optional=False): """Make sure the specified module, when imported, raises a @@ -169,6 +170,11 @@ class TestStdlibRemovals(unittest.TestCase): for module_name in self.inclusive_platforms.get(sys.platform, []): self.check_removal(module_name, optional=True) + def test_optional_module_removals(self): + # Test the removal of modules that may or may not be built. + for module_name in self.optional_modules: + self.check_removal(module_name, optional=True) + def test_os_path_walk(self): msg = "In 3.x, os.path.walk is removed in favor of os.walk." def dumbo(where, names, args): pass diff --git a/Misc/NEWS b/Misc/NEWS index 41d3fe5bd86..11294bd8cb3 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -23,6 +23,8 @@ Extension Modules Library ------- +- The bsddb185 module has been deprecated for removal in Python 3.0. + - The pure module has been deprecated for removal in Python 3.0. - Issue #2487: change the semantics of math.ldexp(x, n) when n is too diff --git a/Modules/bsddbmodule.c b/Modules/bsddbmodule.c index 61c656437e3..09728821e32 100644 --- a/Modules/bsddbmodule.c +++ b/Modules/bsddbmodule.c @@ -847,6 +847,10 @@ PyMODINIT_FUNC initbsddb185(void) { PyObject *m, *d; + if (PyErr_WarnPy3k("the bsddb185 module has been removed in " + "Python 3.0", 2) < 0) + return; + Bsddbtype.ob_type = &PyType_Type; m = Py_InitModule("bsddb185", bsddbmodule_methods); if (m == NULL)