From 32476fc5a8c1e4bdfab04ab09b254a3c833e5785 Mon Sep 17 00:00:00 2001 From: Brett Cannon Date: Fri, 5 Sep 2008 18:33:51 +0000 Subject: Deprecate bsddb for removal in Python 3.0. Closes issue 3776. Review by Nick Coghlan. --- Doc/library/bsddb.rst | 3 +++ Doc/library/dbhash.rst | 6 ++---- Lib/bsddb/__init__.py | 6 ++++++ Lib/dbhash.py | 3 +++ Lib/test/test_py3kwarn.py | 2 +- Lib/test/test_warnings.py | 1 + Lib/warnings.py | 9 ++++++++- Misc/NEWS | 2 ++ 8 files changed, 26 insertions(+), 6 deletions(-) diff --git a/Doc/library/bsddb.rst b/Doc/library/bsddb.rst index ed45619..52ff38a 100644 --- a/Doc/library/bsddb.rst +++ b/Doc/library/bsddb.rst @@ -6,6 +6,9 @@ :synopsis: Interface to Berkeley DB database library .. sectionauthor:: Skip Montanaro +.. deprecated:: 2.6 + The :mod:`bsddb` module has been deprecated for removal in Python 3.0. + The :mod:`bsddb` module provides an interface to the Berkeley DB library. Users can create hash, btree or record based library files using the appropriate open diff --git a/Doc/library/dbhash.rst b/Doc/library/dbhash.rst index bedfad4..6f9a24f 100644 --- a/Doc/library/dbhash.rst +++ b/Doc/library/dbhash.rst @@ -5,10 +5,8 @@ :synopsis: DBM-style interface to the BSD database library. .. sectionauthor:: Fred L. Drake, Jr. -.. note:: - The :mod:`dbhash` module has been renamed to :mod:`dbm.bsd` in Python 3.0. - The :term:`2to3` tool will automatically adapt imports when converting your - sources to 3.0. +.. deprecated:: 2.6 + The :mod:`dbhash` module has been deprecated for removal in Python 3.0. .. index:: module: bsddb diff --git a/Lib/bsddb/__init__.py b/Lib/bsddb/__init__.py index 0e5169c..0af679f 100644 --- a/Lib/bsddb/__init__.py +++ b/Lib/bsddb/__init__.py @@ -42,6 +42,12 @@ instead. It mirrors the Oracle Berkeley DB C API. import sys absolute_import = (sys.version_info[0] >= 3) +if sys.py3kwarning: + import warnings + warnings.warnpy3k("in 3.x, bsddb has been removed; " + "please use the pybsddb project instead", + DeprecationWarning, 2) + try: if __name__ == 'bsddb3': # import _pybsddb binary as it should be the more recent version from diff --git a/Lib/dbhash.py b/Lib/dbhash.py index 9f8a9c3..5ca0bc1 100644 --- a/Lib/dbhash.py +++ b/Lib/dbhash.py @@ -1,6 +1,9 @@ """Provide a (g)dbm-compatible interface to bsddb.hashopen.""" import sys +if sys.py3kwarning: + import warnings + warnings.warnpy3k("in 3.x, dbhash has been removed", DeprecationWarning, 2) try: import bsddb except ImportError: diff --git a/Lib/test/test_py3kwarn.py b/Lib/test/test_py3kwarn.py index 7bfe1e5..780de74 100644 --- a/Lib/test/test_py3kwarn.py +++ b/Lib/test/test_py3kwarn.py @@ -305,7 +305,7 @@ class TestStdlibRemovals(unittest.TestCase): 'sunos5' : ('sunaudiodev', 'SUNAUDIODEV'), } optional_modules = ('bsddb185', 'Canvas', 'dl', 'linuxaudiodev', 'imageop', - 'sv', 'cPickle') + 'sv', 'cPickle', 'bsddb', 'dbhash') def check_removal(self, module_name, optional=False): """Make sure the specified module, when imported, raises a diff --git a/Lib/test/test_warnings.py b/Lib/test/test_warnings.py index 1520bf2..9980f24 100644 --- a/Lib/test/test_warnings.py +++ b/Lib/test/test_warnings.py @@ -508,6 +508,7 @@ class CatchWarningTests(BaseTest): wmod = self.module with wmod.catch_warnings(module=wmod, record=True) as w: self.assertEqual(w, []) + self.assertRaises(AttributeError, getattr, w, 'message') wmod.simplefilter("always") wmod.warn("foo") self.assertEqual(str(w.message), "foo") diff --git a/Lib/warnings.py b/Lib/warnings.py index b699c43..9ec04be 100644 --- a/Lib/warnings.py +++ b/Lib/warnings.py @@ -314,7 +314,14 @@ class WarningsRecorder(list): self.append(WarningMessage(*args, **kwargs)) def __getattr__(self, attr): - return getattr(self[-1], attr) + """Return attributes from the last caught warning, or raise + AttributeError.""" + try: + return getattr(self[-1], attr) + except IndexError: + raise AttributeError("no recorded warning to read " + "{0!r} attribute from".format(attr)) + def reset(self): del self[:] diff --git a/Misc/NEWS b/Misc/NEWS index dd703ee..8c24653 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -56,6 +56,8 @@ C-API Library ------- +- Issue 3776: Deprecate the bsddb package for removal in 3.0. + - Issue #3762: platform.architecture() fails if python is lanched via its symbolic link. -- cgit v0.12