[Python-checkins] r87429 - in python/branches/release27-maint: Lib/_pyio.py Lib/test/test_io.py Misc/NEWS Modules/_io/bufferedio.c
antoine.pitrou
python-checkins at python.org
Tue Dec 21 22:26:55 CET 2010
Author: antoine.pitrou
Date: Tue Dec 21 22:26:55 2010
New Revision: 87429
Log:
Merged revisions 87427 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k
........
r87427 | antoine.pitrou | 2010-12-21 22:20:59 +0100 (mar., 21 déc. 2010) | 3 lines
Issue #10750: The `raw` attribute of buffered IO objects is now read-only.
........
Modified:
python/branches/release27-maint/ (props changed)
python/branches/release27-maint/Lib/_pyio.py
python/branches/release27-maint/Lib/test/test_io.py
python/branches/release27-maint/Misc/NEWS
python/branches/release27-maint/Modules/_io/bufferedio.c
Modified: python/branches/release27-maint/Lib/_pyio.py
==============================================================================
--- python/branches/release27-maint/Lib/_pyio.py (original)
+++ python/branches/release27-maint/Lib/_pyio.py Tue Dec 21 22:26:55 2010
@@ -678,7 +678,7 @@
"""
def __init__(self, raw):
- self.raw = raw
+ self._raw = raw
### Positioning ###
@@ -722,8 +722,8 @@
if self.raw is None:
raise ValueError("raw stream already detached")
self.flush()
- raw = self.raw
- self.raw = None
+ raw = self._raw
+ self._raw = None
return raw
### Inquiries ###
@@ -738,6 +738,10 @@
return self.raw.writable()
@property
+ def raw(self):
+ return self._raw
+
+ @property
def closed(self):
return self.raw.closed
@@ -1456,7 +1460,7 @@
if not isinstance(errors, basestring):
raise ValueError("invalid errors: %r" % errors)
- self.buffer = buffer
+ self._buffer = buffer
self._line_buffering = line_buffering
self._encoding = encoding
self._errors = errors
@@ -1511,6 +1515,10 @@
def line_buffering(self):
return self._line_buffering
+ @property
+ def buffer(self):
+ return self._buffer
+
def seekable(self):
return self._seekable
@@ -1724,8 +1732,8 @@
if self.buffer is None:
raise ValueError("buffer is already detached")
self.flush()
- buffer = self.buffer
- self.buffer = None
+ buffer = self._buffer
+ self._buffer = None
return buffer
def seek(self, cookie, whence=0):
Modified: python/branches/release27-maint/Lib/test/test_io.py
==============================================================================
--- python/branches/release27-maint/Lib/test/test_io.py (original)
+++ python/branches/release27-maint/Lib/test/test_io.py Tue Dec 21 22:26:55 2010
@@ -701,6 +701,13 @@
b.close()
self.assertRaises(ValueError, b.flush)
+ def test_readonly_attributes(self):
+ raw = self.MockRawIO()
+ buf = self.tp(raw)
+ x = self.MockRawIO()
+ with self.assertRaises((AttributeError, TypeError)):
+ buf.raw = x
+
class BufferedReaderTest(unittest.TestCase, CommonBufferedTests):
read_mode = "rb"
@@ -2211,6 +2218,12 @@
txt.close()
self.assertRaises(ValueError, txt.flush)
+ def test_readonly_attributes(self):
+ txt = self.TextIOWrapper(self.BytesIO(self.testdata), encoding="ascii")
+ buf = self.BytesIO(self.testdata)
+ with self.assertRaises((AttributeError, TypeError)):
+ txt.buffer = buf
+
class CTextIOWrapperTest(TextIOWrapperTest):
def test_initialization(self):
Modified: python/branches/release27-maint/Misc/NEWS
==============================================================================
--- python/branches/release27-maint/Misc/NEWS (original)
+++ python/branches/release27-maint/Misc/NEWS Tue Dec 21 22:26:55 2010
@@ -22,6 +22,8 @@
Library
-------
+- Issue #10750: The ``raw`` attribute of buffered IO objects is now read-only.
+
- Issue #10242: unittest.TestCase.assertItemsEqual makes too many assumgptions
about input.
Modified: python/branches/release27-maint/Modules/_io/bufferedio.c
==============================================================================
--- python/branches/release27-maint/Modules/_io/bufferedio.c (original)
+++ python/branches/release27-maint/Modules/_io/bufferedio.c Tue Dec 21 22:26:55 2010
@@ -1513,7 +1513,7 @@
};
static PyMemberDef bufferedreader_members[] = {
- {"raw", T_OBJECT, offsetof(buffered, raw), 0},
+ {"raw", T_OBJECT, offsetof(buffered, raw), READONLY},
{NULL}
};
@@ -1896,7 +1896,7 @@
};
static PyMemberDef bufferedwriter_members[] = {
- {"raw", T_OBJECT, offsetof(buffered, raw), 0},
+ {"raw", T_OBJECT, offsetof(buffered, raw), READONLY},
{NULL}
};
@@ -2286,7 +2286,7 @@
};
static PyMemberDef bufferedrandom_members[] = {
- {"raw", T_OBJECT, offsetof(buffered, raw), 0},
+ {"raw", T_OBJECT, offsetof(buffered, raw), READONLY},
{NULL}
};
More information about the Python-checkins
mailing list