[Python-checkins] r87428 - in python/branches/release31-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:09 CET 2010


Author: antoine.pitrou
Date: Tue Dec 21 22:26:09 2010
New Revision: 87428
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/release31-maint/ (props changed)
 python/branches/release31-maint/Lib/_pyio.py
 python/branches/release31-maint/Lib/test/test_io.py
 python/branches/release31-maint/Misc/NEWS
 python/branches/release31-maint/Modules/_io/bufferedio.c
Modified: python/branches/release31-maint/Lib/_pyio.py
==============================================================================
--- python/branches/release31-maint/Lib/_pyio.py	(original)
+++ python/branches/release31-maint/Lib/_pyio.py	Tue Dec 21 22:26:09 2010
@@ -674,7 +674,7 @@
 """
 
 def __init__(self, raw):
- self.raw = raw
+ self._raw = raw
 
 ### Positioning ###
 
@@ -718,8 +718,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 ###
@@ -734,6 +734,10 @@
 return self.raw.writable()
 
 @property
+ def raw(self):
+ return self._raw
+
+ @property
 def closed(self):
 return self.raw.closed
 
@@ -1444,7 +1448,7 @@
 if not isinstance(errors, str):
 raise ValueError("invalid errors: %r" % errors)
 
- self.buffer = buffer
+ self._buffer = buffer
 self._line_buffering = line_buffering
 self._encoding = encoding
 self._errors = errors
@@ -1499,6 +1503,10 @@
 def line_buffering(self):
 return self._line_buffering
 
+ @property
+ def buffer(self):
+ return self._buffer
+
 def seekable(self):
 return self._seekable
 
@@ -1713,8 +1721,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/release31-maint/Lib/test/test_io.py
==============================================================================
--- python/branches/release31-maint/Lib/test/test_io.py	(original)
+++ python/branches/release31-maint/Lib/test/test_io.py	Tue Dec 21 22:26:09 2010
@@ -693,6 +693,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):
+ buf.raw = x
+
 
 class BufferedReaderTest(unittest.TestCase, CommonBufferedTests):
 read_mode = "rb"
@@ -2210,6 +2217,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):
+ txt.buffer = buf
+
 class CTextIOWrapperTest(TextIOWrapperTest):
 
 def test_initialization(self):
Modified: python/branches/release31-maint/Misc/NEWS
==============================================================================
--- python/branches/release31-maint/Misc/NEWS	(original)
+++ python/branches/release31-maint/Misc/NEWS	Tue Dec 21 22:26:09 2010
@@ -24,6 +24,8 @@
 Library
 -------
 
+- Issue #10750: The ``raw`` attribute of buffered IO objects is now read-only.
+
 - Issue #6791: Limit header line length (to 65535 bytes) in http.client
 and http.server, to avoid denial of services from the other party.
 
Modified: python/branches/release31-maint/Modules/_io/bufferedio.c
==============================================================================
--- python/branches/release31-maint/Modules/_io/bufferedio.c	(original)
+++ python/branches/release31-maint/Modules/_io/bufferedio.c	Tue Dec 21 22:26:09 2010
@@ -1500,7 +1500,7 @@
 };
 
 static PyMemberDef bufferedreader_members[] = {
- {"raw", T_OBJECT, offsetof(buffered, raw), 0},
+ {"raw", T_OBJECT, offsetof(buffered, raw), READONLY},
 {NULL}
 };
 
@@ -1882,7 +1882,7 @@
 };
 
 static PyMemberDef bufferedwriter_members[] = {
- {"raw", T_OBJECT, offsetof(buffered, raw), 0},
+ {"raw", T_OBJECT, offsetof(buffered, raw), READONLY},
 {NULL}
 };
 
@@ -2272,7 +2272,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

AltStyle によって変換されたページ (->オリジナル) /