Issue #10355: SpooledTemporaryFile properties now work for unrolled files.
Remove obsoleted xreadline method.
This commit is contained in:
parent
4b109cb4a8
commit
bbbbe8eb60
|
@ -546,7 +546,12 @@ class SpooledTemporaryFile:
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def encoding(self):
|
def encoding(self):
|
||||||
return self._file.encoding
|
try:
|
||||||
|
return self._file.encoding
|
||||||
|
except AttributeError:
|
||||||
|
if 'b' in self._TemporaryFileArgs['mode']:
|
||||||
|
raise
|
||||||
|
return self._TemporaryFileArgs['encoding']
|
||||||
|
|
||||||
def fileno(self):
|
def fileno(self):
|
||||||
self.rollover()
|
self.rollover()
|
||||||
|
@ -560,18 +565,26 @@ class SpooledTemporaryFile:
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def mode(self):
|
def mode(self):
|
||||||
return self._file.mode
|
try:
|
||||||
|
return self._file.mode
|
||||||
|
except AttributeError:
|
||||||
|
return self._TemporaryFileArgs['mode']
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def name(self):
|
def name(self):
|
||||||
return self._file.name
|
try:
|
||||||
|
return self._file.name
|
||||||
|
except AttributeError:
|
||||||
|
return None
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def newlines(self):
|
def newlines(self):
|
||||||
return self._file.newlines
|
try:
|
||||||
|
return self._file.newlines
|
||||||
def next(self):
|
except AttributeError:
|
||||||
return self._file.next
|
if 'b' in self._TemporaryFileArgs['mode']:
|
||||||
|
raise
|
||||||
|
return self._TemporaryFileArgs['newline']
|
||||||
|
|
||||||
def read(self, *args):
|
def read(self, *args):
|
||||||
return self._file.read(*args)
|
return self._file.read(*args)
|
||||||
|
@ -607,9 +620,6 @@ class SpooledTemporaryFile:
|
||||||
self._check(file)
|
self._check(file)
|
||||||
return rv
|
return rv
|
||||||
|
|
||||||
def xreadlines(self, *args):
|
|
||||||
return self._file.xreadlines(*args)
|
|
||||||
|
|
||||||
|
|
||||||
class TemporaryDirectory(object):
|
class TemporaryDirectory(object):
|
||||||
"""Create and return a temporary directory. This has the same
|
"""Create and return a temporary directory. This has the same
|
||||||
|
|
|
@ -808,6 +808,26 @@ class test_SpooledTemporaryFile(TC):
|
||||||
seek(0, 0)
|
seek(0, 0)
|
||||||
self.assertEqual(read(70), b'a'*35 + b'b'*35)
|
self.assertEqual(read(70), b'a'*35 + b'b'*35)
|
||||||
|
|
||||||
|
def test_properties(self):
|
||||||
|
f = tempfile.SpooledTemporaryFile(max_size=10)
|
||||||
|
f.write(b'x' * 10)
|
||||||
|
self.assertFalse(f._rolled)
|
||||||
|
self.assertEqual(f.mode, 'w+b')
|
||||||
|
self.assertIsNone(f.name)
|
||||||
|
with self.assertRaises(AttributeError):
|
||||||
|
f.newlines
|
||||||
|
with self.assertRaises(AttributeError):
|
||||||
|
f.encoding
|
||||||
|
|
||||||
|
f.write(b'x')
|
||||||
|
self.assertTrue(f._rolled)
|
||||||
|
self.assertEqual(f.mode, 'rb+')
|
||||||
|
self.assertIsNotNone(f.name)
|
||||||
|
with self.assertRaises(AttributeError):
|
||||||
|
f.newlines
|
||||||
|
with self.assertRaises(AttributeError):
|
||||||
|
f.encoding
|
||||||
|
|
||||||
def test_text_mode(self):
|
def test_text_mode(self):
|
||||||
# Creating a SpooledTemporaryFile with a text mode should produce
|
# Creating a SpooledTemporaryFile with a text mode should produce
|
||||||
# a file object reading and writing (Unicode) text strings.
|
# a file object reading and writing (Unicode) text strings.
|
||||||
|
@ -818,6 +838,12 @@ class test_SpooledTemporaryFile(TC):
|
||||||
f.write("def\n")
|
f.write("def\n")
|
||||||
f.seek(0)
|
f.seek(0)
|
||||||
self.assertEqual(f.read(), "abc\ndef\n")
|
self.assertEqual(f.read(), "abc\ndef\n")
|
||||||
|
self.assertFalse(f._rolled)
|
||||||
|
self.assertEqual(f.mode, 'w+')
|
||||||
|
self.assertIsNone(f.name)
|
||||||
|
self.assertIsNone(f.newlines)
|
||||||
|
self.assertIsNone(f.encoding)
|
||||||
|
|
||||||
f.write("xyzzy\n")
|
f.write("xyzzy\n")
|
||||||
f.seek(0)
|
f.seek(0)
|
||||||
self.assertEqual(f.read(), "abc\ndef\nxyzzy\n")
|
self.assertEqual(f.read(), "abc\ndef\nxyzzy\n")
|
||||||
|
@ -825,6 +851,11 @@ class test_SpooledTemporaryFile(TC):
|
||||||
f.write("foo\x1abar\n")
|
f.write("foo\x1abar\n")
|
||||||
f.seek(0)
|
f.seek(0)
|
||||||
self.assertEqual(f.read(), "abc\ndef\nxyzzy\nfoo\x1abar\n")
|
self.assertEqual(f.read(), "abc\ndef\nxyzzy\nfoo\x1abar\n")
|
||||||
|
self.assertTrue(f._rolled)
|
||||||
|
self.assertEqual(f.mode, 'w+')
|
||||||
|
self.assertIsNotNone(f.name)
|
||||||
|
self.assertEqual(f.newlines, '\n')
|
||||||
|
self.assertIsNotNone(f.encoding)
|
||||||
|
|
||||||
def test_text_newline_and_encoding(self):
|
def test_text_newline_and_encoding(self):
|
||||||
f = tempfile.SpooledTemporaryFile(mode='w+', max_size=10,
|
f = tempfile.SpooledTemporaryFile(mode='w+', max_size=10,
|
||||||
|
@ -833,11 +864,19 @@ class test_SpooledTemporaryFile(TC):
|
||||||
f.seek(0)
|
f.seek(0)
|
||||||
self.assertEqual(f.read(), "\u039B\r\n")
|
self.assertEqual(f.read(), "\u039B\r\n")
|
||||||
self.assertFalse(f._rolled)
|
self.assertFalse(f._rolled)
|
||||||
|
self.assertEqual(f.mode, 'w+')
|
||||||
|
self.assertIsNone(f.name)
|
||||||
|
self.assertIsNone(f.newlines)
|
||||||
|
self.assertIsNone(f.encoding)
|
||||||
|
|
||||||
f.write("\u039B" * 20 + "\r\n")
|
f.write("\u039B" * 20 + "\r\n")
|
||||||
f.seek(0)
|
f.seek(0)
|
||||||
self.assertEqual(f.read(), "\u039B\r\n" + ("\u039B" * 20) + "\r\n")
|
self.assertEqual(f.read(), "\u039B\r\n" + ("\u039B" * 20) + "\r\n")
|
||||||
self.assertTrue(f._rolled)
|
self.assertTrue(f._rolled)
|
||||||
|
self.assertEqual(f.mode, 'w+')
|
||||||
|
self.assertIsNotNone(f.name)
|
||||||
|
self.assertIsNotNone(f.newlines)
|
||||||
|
self.assertEqual(f.encoding, 'utf-8')
|
||||||
|
|
||||||
def test_context_manager_before_rollover(self):
|
def test_context_manager_before_rollover(self):
|
||||||
# A SpooledTemporaryFile can be used as a context manager
|
# A SpooledTemporaryFile can be used as a context manager
|
||||||
|
|
|
@ -215,6 +215,10 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #10355: In SpooledTemporaryFile class mode, name, encoding and
|
||||||
|
newlines properties now work for unrolled files. Obsoleted and never
|
||||||
|
working on Python 3 xreadline method now removed.
|
||||||
|
|
||||||
- Issue #16686: Fixed a lot of bugs in audioop module. Fixed crashes in
|
- Issue #16686: Fixed a lot of bugs in audioop module. Fixed crashes in
|
||||||
avgpp(), maxpp() and ratecv(). Fixed an integer overflow in add(), bias(),
|
avgpp(), maxpp() and ratecv(). Fixed an integer overflow in add(), bias(),
|
||||||
and ratecv(). reverse(), lin2lin() and ratecv() no more lose precision for
|
and ratecv(). reverse(), lin2lin() and ratecv() no more lose precision for
|
||||||
|
|
Loading…
Reference in New Issue