mirror of
https://github.com/python/cpython.git
synced 2025-10-03 13:45:29 +00:00
merge heads
This commit is contained in:
commit
9edccb47db
4 changed files with 30 additions and 0 deletions
|
@ -51,6 +51,10 @@ Module :mod:`aifc` defines the following function:
|
||||||
used for writing, the file object should be seekable, unless you know ahead of
|
used for writing, the file object should be seekable, unless you know ahead of
|
||||||
time how many samples you are going to write in total and use
|
time how many samples you are going to write in total and use
|
||||||
:meth:`writeframesraw` and :meth:`setnframes`.
|
:meth:`writeframesraw` and :meth:`setnframes`.
|
||||||
|
Objects returned by :func:`.open` also supports the :keyword:`with` statement.
|
||||||
|
|
||||||
|
.. versionchanged:: 3.4
|
||||||
|
Support for the :keyword:`with` statement was added.
|
||||||
|
|
||||||
Objects returned by :func:`.open` when a file is opened for reading have the
|
Objects returned by :func:`.open` when a file is opened for reading have the
|
||||||
following methods:
|
following methods:
|
||||||
|
|
12
Lib/aifc.py
12
Lib/aifc.py
|
@ -334,6 +334,12 @@ class Aifc_read:
|
||||||
# else, assume it is an open file object already
|
# else, assume it is an open file object already
|
||||||
self.initfp(f)
|
self.initfp(f)
|
||||||
|
|
||||||
|
def __enter__(self):
|
||||||
|
return self
|
||||||
|
|
||||||
|
def __exit__(self, *args):
|
||||||
|
self.close()
|
||||||
|
|
||||||
#
|
#
|
||||||
# User visible methods.
|
# User visible methods.
|
||||||
#
|
#
|
||||||
|
@ -553,6 +559,12 @@ class Aifc_write:
|
||||||
def __del__(self):
|
def __del__(self):
|
||||||
self.close()
|
self.close()
|
||||||
|
|
||||||
|
def __enter__(self):
|
||||||
|
return self
|
||||||
|
|
||||||
|
def __exit__(self, *args):
|
||||||
|
self.close()
|
||||||
|
|
||||||
#
|
#
|
||||||
# User visible methods.
|
# User visible methods.
|
||||||
#
|
#
|
||||||
|
|
|
@ -43,6 +43,18 @@ class AIFCTest(unittest.TestCase):
|
||||||
(2, 2, 48000, 14400, b'NONE', b'not compressed'),
|
(2, 2, 48000, 14400, b'NONE', b'not compressed'),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def test_context_manager(self):
|
||||||
|
with open(self.sndfilepath, 'rb') as testfile:
|
||||||
|
with aifc.open(testfile) as f:
|
||||||
|
pass
|
||||||
|
self.assertEqual(testfile.closed, True)
|
||||||
|
with open(TESTFN, 'wb') as testfile:
|
||||||
|
with self.assertRaises(aifc.Error):
|
||||||
|
with aifc.open(testfile, 'wb') as fout:
|
||||||
|
pass
|
||||||
|
self.assertEqual(testfile.closed, True)
|
||||||
|
fout.close() # do nothing
|
||||||
|
|
||||||
def test_read(self):
|
def test_read(self):
|
||||||
f = self.f = aifc.open(self.sndfilepath)
|
f = self.f = aifc.open(self.sndfilepath)
|
||||||
self.assertEqual(f.readframes(0), b'')
|
self.assertEqual(f.readframes(0), b'')
|
||||||
|
|
|
@ -200,6 +200,8 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #16486: Make aifc files work with 'with' as context managers.
|
||||||
|
|
||||||
- Issue #16485: Fix file descriptor not being closed if file header patching
|
- Issue #16485: Fix file descriptor not being closed if file header patching
|
||||||
fails on closing of aifc file.
|
fails on closing of aifc file.
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue