]> granicus.if.org Git - python/commitdiff
Deprecate the audiodev module for 3.0.
authorBrett Cannon <bcannon@gmail.com>
Tue, 6 May 2008 23:23:34 +0000 (23:23 +0000)
committerBrett Cannon <bcannon@gmail.com>
Tue, 6 May 2008 23:23:34 +0000 (23:23 +0000)
Doc/library/undoc.rst
Lib/audiodev.py
Lib/test/test_py3kwarn.py

index c316e32f88765aff2e48f9b2cd36d5cf76b07227..62efc1842df58d38e3b81410b54cbf1de992cbbd 100644 (file)
@@ -47,6 +47,8 @@ Multimedia
 :mod:`audiodev`
    --- Platform-independent API for playing audio data.
 
+   .. warning:: The :mod:`audiodev` module has been removed in 3.0.
+
 :mod:`linuxaudiodev`
    --- Play audio data on the Linux audio device.  Replaced in Python 2.3 by the
    :mod:`ossaudiodev` module.
index 8945c983c21a1f4996a5037f369cc08d95a10720..b6831a692f5d6f6170e11ce7592298b607c6539f 100644 (file)
@@ -1,4 +1,7 @@
 """Classes for manipulating audio devices (currently only for Sun and SGI)"""
+from warnings import warnpy3k
+warnpy3k("the audiodev module has been removed in Python 3.0", stacklevel=2)
+del warnpy3k
 
 __all__ = ["error","AudioDev"]
 
index 5766e61079cb0819e8c2dfac919dfbf9d007c6b2..2850bf2b5b963cc5861d483bc546981c34b2d799 100644 (file)
@@ -124,8 +124,42 @@ class TestPy3KWarnings(unittest.TestCase):
             self.assertWarning(buffer('a'), w, expected)
 
 
+class TestStdlibRemovals(unittest.TestCase):
+
+    all_platforms = ('audiodev',)
+
+    def check_removal(self, module_name):
+        """Make sure the specified module, when imported, raises a
+        DeprecationWarning and specifies itself in the message."""
+        original_module = None
+        if module_name in sys.modules:
+            original_module = sys.modules[module_name]
+            del sys.modules[module_name]
+        try:
+            with catch_warning() as w:
+                warnings.filterwarnings("error", ".+ removed",
+                                        DeprecationWarning)
+                try:
+                    __import__(module_name, level=0)
+                except DeprecationWarning as exc:
+                    self.assert_(module_name in exc.args[0])
+                else:
+                    self.fail("DeprecationWarning not raised for %s" %
+                                module_name)
+        finally:
+            if original_module:
+                sys.modules[module_name] = original_module
+
+
+    def test_platform_independent_removals(self):
+        # Make sure that the modules that are available on all platforms raise
+        # the proper DeprecationWarning.
+        for module_name in self.all_platforms:
+            self.check_removal(module_name)
+
+
 def test_main():
-    run_unittest(TestPy3KWarnings)
+    run_unittest(TestPy3KWarnings, TestStdlibRemovals)
 
 if __name__ == '__main__':
     test_main()