[Python-checkins] bpo-37320: Remove openfp() of aifc, sunau and wave (GH-14169)

Victor Stinner webhook-mailer at python.org
Mon Jun 17 18:00:30 EDT 2019


https://github.com/python/cpython/commit/ac7b1a3f32cc81520e8962352294006d65744028
commit: ac7b1a3f32cc81520e8962352294006d65744028
branch: master
author: Victor Stinner <vstinner at redhat.com>
committer: GitHub <noreply at github.com>
date: 2019-06-18T00:00:24+02:00
summary:

bpo-37320: Remove openfp() of aifc, sunau and wave (GH-14169)

aifc.openfp() alias to aifc.open(), sunau.openfp() alias to
sunau.open(), and wave.openfp() alias to wave.open() have been
removed. They were deprecated since Python 3.7.

files:
A Misc/NEWS.d/next/Library/2019-06-17-22-10-37.bpo-37320.ffieYa.rst
M Doc/library/sunau.rst
M Doc/library/wave.rst
M Doc/whatsnew/3.9.rst
M Lib/aifc.py
M Lib/sunau.py
M Lib/test/audiotests.py
M Lib/test/test_aifc.py
M Lib/test/test_pyclbr.py
M Lib/test/test_sunau.py
M Lib/test/test_wave.py
M Lib/wave.py

diff --git a/Doc/library/sunau.rst b/Doc/library/sunau.rst
index 2064fd7e20bf..aad6f93b6bff 100644
--- a/Doc/library/sunau.rst
+++ b/Doc/library/sunau.rst
@@ -59,13 +59,6 @@ The :mod:`sunau` module defines the following functions:
    or ``'wb'`` returns an :class:`AU_write` object.
 
 
-.. function:: openfp(file, mode)
-
-   A synonym for :func:`.open`, maintained for backwards compatibility.
-
-   .. deprecated-removed:: 3.7 3.9
-
-
 The :mod:`sunau` module defines the following exception:
 
 .. exception:: Error
diff --git a/Doc/library/wave.rst b/Doc/library/wave.rst
index 60d19a8d5f7d..f63e0d3dce19 100644
--- a/Doc/library/wave.rst
+++ b/Doc/library/wave.rst
@@ -47,13 +47,6 @@ The :mod:`wave` module defines the following function and exception:
    .. versionchanged:: 3.4
       Added support for unseekable files.
 
-.. function:: openfp(file, mode)
-
-   A synonym for :func:`.open`, maintained for backwards compatibility.
-
-   .. deprecated-removed:: 3.7 3.9
-
-
 .. exception:: Error
 
    An error raised when something is impossible because it violates the WAV
diff --git a/Doc/whatsnew/3.9.rst b/Doc/whatsnew/3.9.rst
index 3da8b1685bde..446c8b9719e0 100644
--- a/Doc/whatsnew/3.9.rst
+++ b/Doc/whatsnew/3.9.rst
@@ -122,9 +122,14 @@ Deprecated
 Removed
 =======
 
-``_dummy_thread`` and ``dummy_threading`` modules have been removed. These
-modules were deprecated since Python 3.7 which requires threading support.
-(Contributed by Victor Stinner in :issue:`37312`.)
+* ``_dummy_thread`` and ``dummy_threading`` modules have been removed. These
+  modules were deprecated since Python 3.7 which requires threading support.
+  (Contributed by Victor Stinner in :issue:`37312`.)
+
+* ``aifc.openfp()`` alias to ``aifc.open()``, ``sunau.openfp()`` alias to
+  ``sunau.open()``, and ``wave.openfp()`` alias to ``wave.open()`` have been
+  removed. They were deprecated since Python 3.7.
+  (Contributed by Victor Stinner in :issue:`37320`.)
 
 
 Porting to Python 3.9
diff --git a/Lib/aifc.py b/Lib/aifc.py
index 1916e7ef8e7e..ed5da7d8936f 100644
--- a/Lib/aifc.py
+++ b/Lib/aifc.py
@@ -138,7 +138,7 @@
 import builtins
 import warnings
 
-__all__ = ["Error", "open", "openfp"]
+__all__ = ["Error", "open"]
 
 class Error(Exception):
     pass
@@ -920,10 +920,6 @@ def open(f, mode=None):
     else:
         raise Error("mode must be 'r', 'rb', 'w', or 'wb'")
 
-def openfp(f, mode=None):
-    warnings.warn("aifc.openfp is deprecated since Python 3.7. "
-                  "Use aifc.open instead.", DeprecationWarning, stacklevel=2)
-    return open(f, mode=mode)
 
 if __name__ == '__main__':
     import sys
diff --git a/Lib/sunau.py b/Lib/sunau.py
index 129502b0b417..79750a9d23eb 100644
--- a/Lib/sunau.py
+++ b/Lib/sunau.py
@@ -104,7 +104,7 @@
 """
 
 from collections import namedtuple
-import warnings
+
 
 _sunau_params = namedtuple('_sunau_params',
                            'nchannels sampwidth framerate nframes comptype compname')
@@ -524,8 +524,3 @@ def open(f, mode=None):
         return Au_write(f)
     else:
         raise Error("mode must be 'r', 'rb', 'w', or 'wb'")
-
-def openfp(f, mode=None):
-    warnings.warn("sunau.openfp is deprecated since Python 3.7. "
-                  "Use sunau.open instead.", DeprecationWarning, stacklevel=2)
-    return open(f, mode=mode)
diff --git a/Lib/test/audiotests.py b/Lib/test/audiotests.py
index 0dad01722922..d3e8e9ee44a1 100644
--- a/Lib/test/audiotests.py
+++ b/Lib/test/audiotests.py
@@ -1,7 +1,6 @@
 from test.support import findfile, TESTFN, unlink
 import array
 import io
-from unittest import mock
 import pickle
 
 
@@ -50,17 +49,6 @@ def check_params(self, f, nchannels, sampwidth, framerate, nframes,
             self.assertEqual(pickle.loads(dump), params)
 
 
-class AudioMiscTests(AudioTests):
-
-    def test_openfp_deprecated(self):
-        arg = "arg"
-        mode = "mode"
-        with mock.patch(f"{self.module.__name__}.open") as mock_open, \
-             self.assertWarns(DeprecationWarning):
-            self.module.openfp(arg, mode=mode)
-            mock_open.assert_called_with(arg, mode=mode)
-
-
 class AudioWriteTests(AudioTests):
 
     def create_file(self, testfile):
diff --git a/Lib/test/test_aifc.py b/Lib/test/test_aifc.py
index c74758413d6c..5a95099cc5cd 100644
--- a/Lib/test/test_aifc.py
+++ b/Lib/test/test_aifc.py
@@ -143,13 +143,12 @@ class AifcALAWTest(AifcTest, unittest.TestCase):
         frames = byteswap(frames, 2)
 
 
-class AifcMiscTest(audiotests.AudioMiscTests, unittest.TestCase):
-    module = aifc
-
+class AifcMiscTest(unittest.TestCase):
     def test_skipunknown(self):
         #Issue 2245
         #This file contains chunk types aifc doesn't recognize.
-        self.f = aifc.open(findfile('Sine-1000Hz-300ms.aif'))
+        f = aifc.open(findfile('Sine-1000Hz-300ms.aif'))
+        f.close()
 
     def test_close_opened_files_on_error(self):
         non_aifc_file = findfile('pluck-pcm8.wav', subdir='audiodata')
@@ -172,7 +171,8 @@ def test_params_added(self):
         f.setparams((1, 1, 1, 1, b'NONE', b''))
         f.close()
 
-        f = self.f = aifc.open(TESTFN, 'rb')
+        f = aifc.open(TESTFN, 'rb')
+        self.addCleanup(f.close)
         params = f.getparams()
         self.assertEqual(params.nchannels, f.getnchannels())
         self.assertEqual(params.sampwidth, f.getsampwidth())
@@ -208,7 +208,8 @@ def test_read_markers(self):
         fout.setmark(2, 0, b'even')
         fout.writeframes(b'\x00')
         fout.close()
-        f = self.f = aifc.open(TESTFN, 'rb')
+        f = aifc.open(TESTFN, 'rb')
+        self.addCleanup(f.close)
         self.assertEqual(f.getmarkers(), [(1, 0, b'odd'), (2, 0, b'even')])
         self.assertEqual(f.getmark(1), (1, 0, b'odd'))
         self.assertEqual(f.getmark(2), (2, 0, b'even'))
diff --git a/Lib/test/test_pyclbr.py b/Lib/test/test_pyclbr.py
index 0b3934f6226e..531304021312 100644
--- a/Lib/test/test_pyclbr.py
+++ b/Lib/test/test_pyclbr.py
@@ -225,9 +225,7 @@ def test_others(self):
         cm('random', ignore=('Random',))  # from _random import Random as CoreGenerator
         cm('cgi', ignore=('log',))      # set with = in module
         cm('pickle', ignore=('partial', 'PickleBuffer'))
-        # TODO(briancurtin): openfp is deprecated as of 3.7.
-        # Update this once it has been removed.
-        cm('aifc', ignore=('openfp', '_aifc_params'))  # set with = in module
+        cm('aifc', ignore=('_aifc_params',))  # set with = in module
         cm('sre_parse', ignore=('dump', 'groups', 'pos')) # from sre_constants import *; property
         cm('pdb')
         cm('pydoc', ignore=('input', 'output',)) # properties
diff --git a/Lib/test/test_sunau.py b/Lib/test/test_sunau.py
index 470a1007b4d4..7f1c0a5cbded 100644
--- a/Lib/test/test_sunau.py
+++ b/Lib/test/test_sunau.py
@@ -119,10 +119,6 @@ class SunauULAWTest(SunauTest, unittest.TestCase):
         frames = byteswap(frames, 2)
 
 
-class SunauMiscTests(audiotests.AudioMiscTests, unittest.TestCase):
-    module = sunau
-
-
 class SunauLowLevelTest(unittest.TestCase):
 
     def test_read_bad_magic_number(self):
diff --git a/Lib/test/test_wave.py b/Lib/test/test_wave.py
index 8a42f8e47105..eb231cb19c6d 100644
--- a/Lib/test/test_wave.py
+++ b/Lib/test/test_wave.py
@@ -105,9 +105,7 @@ class WavePCM32Test(WaveTest, unittest.TestCase):
         frames = byteswap(frames, 4)
 
 
-class MiscTestCase(audiotests.AudioMiscTests, unittest.TestCase):
-    module = wave
-
+class MiscTestCase(unittest.TestCase):
     def test__all__(self):
         blacklist = {'WAVE_FORMAT_PCM'}
         support.check__all__(self, wave, blacklist=blacklist)
diff --git a/Lib/wave.py b/Lib/wave.py
index f155879a9a76..100420db9e16 100644
--- a/Lib/wave.py
+++ b/Lib/wave.py
@@ -71,9 +71,15 @@
 is destroyed.
 """
 
+from chunk import Chunk
+from collections import namedtuple
+import audioop
 import builtins
+import struct
+import sys
+
 
-__all__ = ["open", "openfp", "Error", "Wave_read", "Wave_write"]
+__all__ = ["open", "Error", "Wave_read", "Wave_write"]
 
 class Error(Exception):
     pass
@@ -82,13 +88,6 @@ class Error(Exception):
 
 _array_fmts = None, 'b', 'h', None, 'i'
 
-import audioop
-import struct
-import sys
-from chunk import Chunk
-from collections import namedtuple
-import warnings
-
 _wave_params = namedtuple('_wave_params',
                      'nchannels sampwidth framerate nframes comptype compname')
 
@@ -512,8 +511,3 @@ def open(f, mode=None):
         return Wave_write(f)
     else:
         raise Error("mode must be 'r', 'rb', 'w', or 'wb'")
-
-def openfp(f, mode=None):
-    warnings.warn("wave.openfp is deprecated since Python 3.7. "
-                  "Use wave.open instead.", DeprecationWarning, stacklevel=2)
-    return open(f, mode=mode)
diff --git a/Misc/NEWS.d/next/Library/2019-06-17-22-10-37.bpo-37320.ffieYa.rst b/Misc/NEWS.d/next/Library/2019-06-17-22-10-37.bpo-37320.ffieYa.rst
new file mode 100644
index 000000000000..bc5745261cfa
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2019-06-17-22-10-37.bpo-37320.ffieYa.rst
@@ -0,0 +1,3 @@
+``aifc.openfp()`` alias to ``aifc.open()``, ``sunau.openfp()`` alias to
+``sunau.open()``, and ``wave.openfp()`` alias to ``wave.open()`` have been
+removed. They were deprecated since Python 3.7.



More information about the Python-checkins mailing list